2

私はNIMと呼ばれる小さなゲームをしなければなりません。このゲームは人間対コンピューターのゲームで、各プレイヤーはストローを 1 本、2 本、または 3 本取り、最後のストローを取り除いたプレーヤーが敗者となります。ゲームが正常に動作するようになりましたが、問題は、プレイヤーがもう一度プレイしたい場合に再実行したくないことです。どんな助けでも大歓迎です。:)

import random
print("""************ NIM GAME   ***********
************ Game Start ***********
************ The rules  ***********
-----------------------------------------------------
You need to remove from 1 to 3 straws from the pile.
The player that removes the final straw is the loser.
-----------------------------------------------------""")

player1=str(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():
    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()
4

1 に答える 1

1

各ゲームの開始時にストローの数をリセットするのを忘れました。の後def game():に、次を挿入する必要があります。

global strawsNumber
strawsNumber=random.randint(10,20)

注:ループanswer=input("Do you want to play again?(y/n)")の最後にも置く必要があります。while answer=="y":これにより、最初のゲームの直後ではなく、毎回リプレイが求められます。

于 2012-11-16T00:40:58.973 に答える