2016-04-02 10 views
0

私はプログラミングが初めてで、私はTicTacToeゲームで勝者を確認することに問題があります。TicTacToe Python勝者を確認

私の問題はdef printboard(ボード)です:勝者を正しくチェックせず、誰かが勝ってもゲームが実行され続けることです。

(2つのファイルがあり、1つはticTacToeRunner & ticTacToeと呼ばれ、最初は2番目のファイルを実行するだけです)。私は問題を抱えているところ

#ticTacTorRunner file 

import ticTacToe 

theBoard = {'top-L': ' ', 'top-M': ' ', 'top-R': ' ', 
'mid-L': ' ', 'mid-M': ' ', 'mid-R': ' ', 
'low-L': ' ', 'low-M': ' ', 'low-R': ' '} 

ticTacToe.startGame('X', theBoard) 



#ticTacToe file 

def printBoard(board): 

    print(board['top-L'] + '|' + board['top-M'] + '|' + board['top-R']) 
    print('-+-+-') 
    print(board['mid-L'] + '|' + board['mid-M'] + '|' + board['mid-R']) 
    print('-+-+-') 
print(board['low-L'] + '|' + board['low-M'] + '|' + board['low-R']) 

は、ここでの勝者のチェック、です:

def checkWinner(board, player): 
print('Checking if ' + player + ' is a winner...') 

#X WIN 

if 'top-L' == 'X' and 'top-M' == 'X' and 'top-R' == 'X': 
    return True 

    elif board == """{'top-L': ' ', 'top-M': ' ', 'top-R': ' ', 
      'mid-L': 'X', 'mid-M': 'X', 'mid-R': 'X', 
      'low-L': 'O', 'low-M': 'O', 'low-R': ' '}""": 
     return True 


    elif board == """{'top-L': 'X|O| ', 'top-M': 'X|O| ', 'top-R': 'X|O| ', 
      'mid-L': 'X|O| ', 'mid-M': 'X|O| ', 'mid-R': 'X|O| ', 
      'low-L': 'X', 'low-M': 'X', 'low-R': 'X'}""": 
     return True 


    elif board == """{'top-L': 'X', 'top-M': 'X|O| ', 'top-R': 'X|O| ', 
      'mid-L': 'X', 'mid-M': 'X|O| ', 'mid-R': 'X|O| ', 
      'low-L': 'X', 'low-M': 'X|O| ', 'low-R': 'X|O| '}""": 
     return True 


    elif board == """{'top-L': 'X|O| ', 'top-M': 'X', 'top-R': 'X|O| ', 
      'mid-L': 'X|O| ', 'mid-M': 'X', 'mid-R': 'X|O| ', 
      'low-L': 'X|O| ', 'low-M': 'X', 'low-R': 'X|O| '}""": 
     return True 

    elif board == """{'top-L': 'X|O| ', 'top-M': 'X|O| ', 'top-R': 'X', 
      'mid-L': 'X|O| ', 'mid-M': 'X|O| ', 'mid-R': 'X', 
      'low-L': 'X|O| ', 'low-M': 'X|O| ', 'low-R': 'X'}""": 
     return True 


    elif board == """{'top-L': 'X', 'top-M': 'X|O| ', 'top-R': 'XX|O| ', 
      'mid-L': 'X|O| ', 'mid-M': 'X', 'mid-R': 'X|O| ', 
      'low-L': 'X|O| ', 'low-M': 'X|O| ', 'low-R': 'X'}""": 
     return True 


    elif board == """{'top-L': 'X|O| ', 'top-M': 'X|O| ', 'top-R': 'X', 
      'mid-L': 'X|O| ', 'mid-M': 'X', 'mid-R': 'X|O| ', 
      'low-L': 'X', 'low-M': 'X|O| ', 'low-R': 'X|O| '}""": 
     return True 



#O WIN 

    elif board == """{'top-L': 'O', 'top-M': 'O', 'top-R': 'O', 
      'mid-L': 'X|O| ', 'mid-M': 'X|O| ', 'mid-R': 'XX|O| ', 
      'low-L': 'X|O| ', 'low-M': 'X|O| ', 'low-R': 'X|O| '}""": 
     return True 


    elif board == """{'top-L': 'X|O| ', 'top-M': 'X|O| ', 'top-R': 'X|O| ', 
      'mid-L': 'O', 'mid-M': 'O', 'mid-R': 'O', 
      'low-L': 'X|O| ', 'low-M': 'X|O| ', 'low-R': 'X|O| '}""": 
     return True 


    elif board == """{'top-L': 'X|O| ', 'top-M': 'X|O| ', 'top-R': 'X|O| ', 
      'mid-L': 'X|O| ', 'mid-M': 'X|O| ', 'mid-R': 'X|O| ', 
      'low-L': 'O', 'low-M': 'O', 'low-R': 'O'}""": 
     return True 


    elif board == """{'top-L': 'O', 'top-M': 'X|O| ', 'top-R': 'X|O| ', 
      'mid-L': 'O', 'mid-M': 'X|O| ', 'mid-R': 'X|O| ', 
      'low-L': 'O', 'low-M': 'X|O| ', 'low-R': 'X|O| '}""": 
     return True 


    elif board == """{'top-L': 'X|O| ', 'top-M': 'O', 'top-R': 'X|O| ', 
      'mid-L': 'X|O| ', 'mid-M': 'O', 'mid-R': 'X|O| ', 
      'low-L': 'X|O| ', 'low-M': 'O', 'low-R': 'X|O| '}""": 
     return True 


    elif board == """{'top-L': 'X|O| ', 'top-M': 'X|O| ', 'top-R': 'O', 
      'mid-L': 'X|O| ', 'mid-M': 'X|O| ', 'mid-R': 'O', 
      'low-L': 'X|O| ', 'low-M': 'X|O| ', 'low-R': 'O'}""": 
     return True 


    elif board == """{'top-L': 'O', 'top-M': 'X|O| ', 'top-R': 'XX|O| ', 
      'mid-L': 'X|O| ', 'mid-M': 'O', 'mid-R': 'X|O| ', 
      'low-L': 'X|O| ', 'low-M': 'X|O| ', 'low-R': 'O'}""": 
     return True 


    elif board == """{'top-L': 'X|O| ', 'top-M': 'X|O| ', 'top-R': 'O', 
      'mid-L': 'X|O| ', 'mid-M': 'O', 'mid-R': 'X|O| ', 
      'low-L': 'O', 'low-M': 'X|O| ', 'low-R': 'X|O| '}""": 
     return True 


    else: 
     return False 

そして、ここではのためのループで、ここで

は、任意のヘルプは大歓迎され、私が現在持っているものですゲーム:

def startGame(startingPlayer, board): 

    turn = startingPlayer 
    for i in range(9): 
     printBoard(board) 
     print('Turn for ' + turn + '. Move on which space?') 
     move = input() 
     board[move] = turn 

     if (checkWinner(board, 'X')): 
      print('X wins!') 
      break 
     elif (checkWinner(board, 'O')): 
      print('O wins!') 
      break 

     if turn == 'X': 
      turn = 'O' 
     else: 
      turn = 'X' 

    print (board) 
+0

'checkWinner'の字下げに欠陥があります。それは構文エラーのように見えます。 Pythonはコントロールフローにインデントを使用するので、あなたの質問のコードが適切にインデントされていないという事実は、あなたのコードが本当に何かを実際に知っていることを誰も実際に知っていないことを意味します。 –

答えて

1

このボードはPython dictの文字列表記(これは決して通過しません)。 ifの周囲から3重引用符を削除すると動作する可能性があります。

という恐ろしいものを選んだと付け加えます。ティックタックトウボードを表現する方法。代わりにリストのリストを使用することをお勧めします。これはもっとコンパクトで、board[0][0]からboard[2][2]にボードの位置にアクセスし、それぞれを個別にリストする代わりにループを使用して条件をチェックします。

関連する問題