2017-02-24 6 views
0

2人のプレイヤーが順番にプレイすることができましたが、2番目のプレイヤーが答えを入力した後に停止します。私はWhileループをやりたいと思っていましたが、私は真剣に考え方がなくなりました。私は2人のプレイヤーが0またはXの3つの位置が満たされるまで演奏を続けたいと思っているように私の心の中に入れますが、コードに入れておくと本当に助けが必要です。どうすればいいですか?多くの条件を満たすループがありますか?#

は、以下の私の状態ですが、私はこれらの条件は、(3つの要素ごとに)

if list1[0,1,2] == 'x': 
print ('Congrats! x won!') 
elif (list1 [0] , list2 [0] , list3[0]) == 'x': 
print ('Congrats! x won!') 
elif (list1 [0] , list2 [1], list3[2]) == 'x': 
print ('Congrats! x won!') 
elif (list2 [0] , list2 [1], list2[2])== 'x': 
print ('Congrats! x won!') 
elif (list3 [0] , list3 [0], list3[0]) == 'x': 
print ('Congrats! x won!') 
elif (list1 [1] , list2 [1], list3[1]) == 'x': 
print ('Congrats! x won!') 
elif (list1 [2] , list2 [2], list3[2]) == 'x': 
print ('Congrats! x won!') 
elif (list1 [0] , list2 [1], list3[0]) == 'x': 
print ('Congrats! x won!') 
elif (list1 [1] , list2 [1], list3[1]) == 'x': 
print ('Congrats! x won!') 
elif (list1 [2] , list2 [2], list3[2]) == 'x': 
print ('Congrats! x won!') 
elif (list1 [0] , list2 [0], list3[0]) == 'x': 
print ('Congrats! x won!') 
elif (list1[0,1,2] == 'o':) 
print ('Congrats! o won!') 
elif (list1 [0] , list2 [0] ,list3[0]) == 'o': 
print ('Congrats! o won!') 
elif (list1 [0] , list2 [1], list3[2]) == 'o': 
print ('Congrats! o won!') 
elif (list2 [0] , list2 [1], list2[2]) == 'o': 
print ('Congrats! o won!') 
elif (list3 [0] , list3 [0], list3[0]) == 'o': 
print ('Congrats! o won!') 
elif (list1 [1] , list2 [1], list3[1]) == 'o': 
print ('Congrats! o won!') 
elif (list1 [2] , list2 [2], list3[2]) == 'o': 
print ('Congrats! o won!') 
elif (list1 [0] , list2 [1], list3[0]) == 'o': 
print ('Congrats! o won!') 
elif (list1 [1] , list2 [1], list3[1]) == 'o': 
print ('Congrats! o won!') 
elif (list1 [2] , list2 [2], list3[2]) == 'o': 
print ('Congrats! o won!') 
elif (list1 [0] , list2 [0], list3[0]) == 'o': 
print ('Congrats! o won!') 
else 
+0

待ちは、3列の三目並べ、そしてあなたがしているということです誰かが勝ったかどうかを調べる –

+0

異なるオブジェクトを比較しているため、あなたの条件は真になりません。私は[pythonチュートリアル](https://docs.python.org/2/tutorial/) –

+0

をご覧になることをお勧めします。はい、私は3つのリストを使用しました。 list1、list2、list3 – sarah

答えて

2

3つのリストのリストとしてあなたのボードを持っているために容易になるだろうが満たされるまで、それはプレイヤーを求めていきたいと思います。

allanyで、あなたは避けることができ、多くの不必要な繰り返し:

board = [['x', None, 'o'], 
     ['o', 'x', None], 
     ['o', None, 'x'] 
     ] 


def three_in_row(board, player): 
    return any(all(board[j][i] == player for i in range(3)) for j in range(3)) 


def three_in_column(board, player): 
    return any(all(board[i][j] == player for i in range(3)) for j in range(3)) 


def three_in_diagonal(board, player): 
    return all(board[i][i] == player for i in range(3)) or\ 
     all(board[i][2 - i] == player for i in range(3)) 


print three_in_row(board, 'x') 
# False 
print three_in_column(board, 'x') 
# False 
print three_in_diagonal(board, 'x') 
# True 
0

これを試してみてください:

def check_line(line): 
    if line[0]==line[1] and line[1]==line[2]: 
     return line[0] 
    return ' ' 

def check_win(board): 
    #check horizontals 
    for row in board: 
     res=check_line(row) 
     if res != ' ': 
      return res 

    #check verticals 
    x=0 
    for col in board[0]: 
     res=check_line([board[y][x] for y in range(0, 3)]) 
     x+=1 
     if res != ' ': 
      return res 

    #check diagonals 
    for diagonal in ([board[0][0], board[1][1], board[2][2]], [board[0][2], board[1][1], board[2][0]]): 
     res = check_line(diagonal) 
     if res != ' ': 
      return res 

    return ' ' 

def show_winner(list1, list2, list3): 
    winner=check_win([list1, list2, list3]) 
    if winner!=" ": 
     print("Congrats! {0} won!".format(winner)) 

list1=['o', 'x', 'x'] 
list2=['o', 'x', ' '] 
list3=['x', 'o', ' '] 
show_winner(list1, list2, list3) 
関連する問題