21 Python中的数字游戏
21、巴格拉姆或二十加一是一种从 1 数到 21 的游戏,叫“21”的玩家被淘汰。它可以在任意数量的玩家之间进行。
执行
这是一个使用Python编程语言的简单 21 号游戏。此处说明的游戏是在玩家和计算机之间进行的。游戏中可以有很多变化。
- 玩家可以选择第一个或第二个开始。
- 号码列表在玩家轮到他之前显示,以便于使用。
- 如果在输入中没有给出连续的数字,那么玩家将被自动取消资格。
- 如果玩家有机会跟注 21 则为输,否则为赢。
通过选择第二名,可以赢得对计算机的胜利。策略是呼叫数字直到 4 的倍数,最终在计算机上导致 21,从而使玩家成为赢家。
# Python code to play 21 Number game
# returns the nearest multiple to 4
def nearestMultiple(num):
if num >= 4:
near = num + (4 - (num % 4))
else:
near = 4
return near
def lose1():
print ("\n\nYOU LOSE !")
print("Better luck next time !")
exit(0)
# checks whether the numbers are consecutive
def check(xyz):
i = 1
while i ')
# player takes the first chance
if chance == "F":
while True:
if last == 20:
lose1()
else:
print ("\nYour Turn.")
print ("\nHow many numbers do you wish to enter?")
inp = int(input('> '))
if inp > 0 and inp <= 3:
comp = 4 - inp
else:
print ("Wrong input. You are disqualified from the game.")
lose1()
i, j = 1, 1
print ("Now enter the values")
while i <= inp:
a = input('> ')
a = int(a)
xyz.append(a)
i = i + 1
# store the last element of xyz.
last = xyz[-1]
# checks whether the input
# numbers are consecutive
if check(xyz) == True:
if last == 21:
lose1()
else:
#"Computer's turn."
while j <= comp:
xyz.append(last + j)
j = j + 1
print ("Order of inputs after computer's turn is: ")
print (xyz)
last = xyz[-1]
else:
print ("\nYou did not input consecutive integers.")
lose1()
# player takes the second chance
elif chance == "S":
comp = 1
last = 0
while last < 20:
#"Computer's turn"
j = 1
while j <= comp:
xyz.append(last + j)
j = j + 1
print ("Order of inputs after computer's turn is:")
print (xyz)
if xyz[-1] == 20:
lose1()
else:
print ("\nYour turn.")
print ("\nHow many numbers do you wish to enter?")
inp = input('> ')
inp = int(inp)
i = 1
print ("Enter your values")
while i <= inp:
xyz.append(int(input('> ')))
i = i + 1
last = xyz[-1]
if check(xyz) == True:
# print (xyz)
near = nearestMultiple(last)
comp = near - last
if comp == 4:
comp = 3
else:
comp = comp
else:
# if inputs are not consecutive
# automatically disqualified
print ("\nYou did not input consecutive integers.")
# print ("You are disqualified from the game.")
lose1()
print ("\n\nCONGRATULATIONS !!!")
print ("YOU WON !")
exit(0)
else:
print ("wrong choice")
game = True
while game == True:
print ("Player 2 is Computer.")
print("Do you want to play the 21 number game? (Yes / No)")
ans = input('> ')
if ans =='Yes':
start1()
else:
print ("Do you want quit the game?(yes / no)")
nex = input('> ')
if nex == "yes":
print ("You are quitting the game...")
exit(0)
elif nex == "no":
print ("Continuing...")
else:
print ("Wrong choice")
输出:
Player 2 is Computer.
Do you want to start the game? (Yes/No)
> Yes
Enter 'F' to take the first chance.
Enter 'S' to take the second chance.
> S
Order of inputs after computer's turn is:
[1]
Your turn.
How many numbers do you wish to enter?
> 3
Enter your values
> 2
> 3
> 4
Order of inputs after computer's turn is:
[1, 2, 3, 4, 5, 6, 7]
Your turn.
How many numbers do you wish to enter?
> 1
Enter your values
> 8
Order of inputs after computer's turn is:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Your turn.
How many numbers do you wish to enter?
> 1
Enter your values
> 12
Order of inputs after computer's turn is:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Your turn.
How many numbers do you wish to enter?
> 1
Enter your values
> 16
Order of inputs after computer's turn is:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
Your turn.
How many numbers do you wish to enter?
> 1
Enter your values
> 20
CONGRATULATIONS!!!
YOU WON!
自己尝试一下作为练习:
- 您可以通过增加玩家数量来进一步增强程序。
- 您也可以只使用偶数/奇数。
- 您可以用二进制数字系统替换数字。
- 您可以在游戏中添加具有变化的关卡。