NIM游戏无法正常工作
我刚开始学习用Python编程,做了一个简单的NIM游戏。这个游戏是人类对电脑,每个玩家可以从1到3根稻草中选择去掉一些。不过我遇到一个问题,就是电脑在玩的时候,似乎没有去掉任何稻草,电脑的回合结束后,稻草的数量还是和之前一样。而且当所有稻草都被去掉后,也没有显示祝贺的信息,也没有提示可以再玩一次。希望能得到一些帮助。
player1=raw_input("Enter your name. ")
player2="Computer"
howMany=0
gameover=False
strawsNumber=random.randint(10,20)
if (strawsNumber%4)==1:
strawsNumber+=1
def removingStrawsComputer():
removedNumber=random.randint(1,3)
global strawsNumber
while removedNumber>strawsNumber:
removedNumber=random.randint(1,3)
strawsNumber-=removedNumber
return strawsNumber
def removingStrawsHuman():
global strawsNumber
strawsNumber-=howMany
return strawsNumber
def humanLegalMove():
global howMany
legalMove=False
while not legalMove:
print("It's your turn, ",player1)
howMany=int(input("How many straws do you want to remove?(from 1 to 3) "))
if howMany>3 or howMany<1:
print("Enter a number between 1 and 3.")
else:
legalMove=True
while howMany>strawsNumber:
print("The entered number is greater than a number of straws remained.")
howMany=int(input("How many straws do you want to remove?"))
return howMany
def checkWinner(player):
if strawsNumber==0:
print(player," wins.")
global gameover
gameover=True
return gameover
def resetGameover():
global gameover
gameover=False
return gameover
def game():
global strawsNumber
strawsNumber=random.randint(10,20)
while gameover==False:
print("It's ",player2,"turn. The number of straws left: ",removingStrawsComputer())
checkWinner(player1)
if gameover==True:
break
humanLegalMove()
print("The number of straws left: ",removingStrawsHuman())
checkWinner(player2)
def playAgain():
answer=input("Do you want to play again?(y/n)")
resetGameover()
while answer=="y":
game()
else:
print("Thanks for playing the game")
game()
playAgain()
1 个回答
0
你只需要调整一下你的缩进
def removingStrawsComputer():
removedNumber=random.randint(1,3)
global strawsNumber
while removedNumber>strawsNumber:
removedNumber=random.randint(1,3)
strawsNumber-=removedNumber
return strawsNumber
这段代码只会在 if removedNumber > strawsNumber
的情况下,移除 strawNumber 的吸管
要解决这个问题,调整一下你的缩进就可以了
def removingStrawsComputer():
removedNumber=random.randint(1,3)
global strawsNumber
while removedNumber>strawsNumber:
removedNumber=random.randint(1,3)
strawsNumber-=removedNumber #now always remove the straws
return strawsNumber