2016-09-30 13 views
0

私は新しいゲームをコードやPlayAgain(y)または(n)に入れますか? これは私の学校プロジェクトです。私は自分自身で解決策を見つけようとしていますが、「再生を再試行する」かエラーだけを繰り返すことになります。Python NIMゲーム:新しいゲームを追加するにはどうすればいいですか?

import random 

    player1 = input("Enter your real name: ") 
    player2 = "Computer" 

    state = random.randint(12,15) 
    print("The number of sticks is " , state) 
    while(True): 
     print(player1) 
     while(True): 
      move = int(input("Enter your move: ")) 
      if move in (1,2,3) and move <= state: 
       break 
      print("Illegal move") 
     state = state - move 
     print("The number of sticks is now " , state) 
     if state == 0: 
      print(player1 , "wins") 
      break 
     print(player2) 
     move = random.randint(1,3) 
     if state in (1,2,3): 
      move = state 
     print("My move is " , move) 
     state = state - move 
     print("The number of sticks is now " , state) 
     if state == 0: 
      print("Computer wins") 
      break 

答えて

0

あなたのループ条件は常にTrueです。これは調整が必要なものです。代わりに、ユーザーが続行したいときにループするだけです

choice = 'y' # so that we run at least once 
while choice == 'y': 
    ... 
    choice = input("Play again? (y/n):") 

新しいゲームを開始するたびに状態をリセットする必要があります。

ゲームを終了できるポイントが複数あるため、コードをリファクタリングするか、breakを置き換える必要があります。例えば

if state == 0: 
    print(player1 , "wins") 
    choice = input("Play again? (y/n):") 
    continue 

または何が容易かもしれ、私は

+0

は、あなたがあなたのことができたならば、私は関数に物事を因数分解を開始したいその時点で内部ループ

choice = 'y' while choice == 'y': while True: ... if state == 0: print(player1, "wins") break ... choice = input("Play again? (y/n):") 

にゲームを置くことですちょうど私が最初の例で不足しているコード –

+0

を置かなければならない場所を食べてください。 '...'がゲーム全体になるでしょう。 2番目の例では、自分で解決する必要があります。私たちはあなたの宿題をするためではありません。 –

+0

ありがとう、とにかく –

関連する問題