试图找出我的代码有什么问题

时间:2021-06-11 14:42:01

标签: python-3.x

在这里,我正在尝试开发一款游戏。

任何人请解释为什么 win 值发生变化时变量 Board 的布尔值不会更新

这是代码..

Board = {'1':'1','2':'6','3':'7',
         '4':'2','5':'5','6':'8',
         '7':'3','8':'4','9':'9'}

Win = Board['1'] == Board['2']== Board['3']=='X' or Board['4'] == Board['5'] == Board['6'] or Board['7'] == Board['8'] == Board['9'] or Board['1'] == Board['5'] == Board['9'] or Board['3'] == Board['5'] == Board['7'] or Board['1'] == Board['4'] == Board['7'] or Board['2'] == Board['5'] == Board['8'] or Board['3'] == Board['6'] == Board['9'] 
turn = 'X'
print(Win)

for i in range(9):
    a = str(input('Enter choice {}: '.format(turn)))
    Board[a] = turn
    turn = 'Y' if turn == 'X' else 'X' 
    if Win:   #Here I am expecting Win to be True but it is actually False
        print('Win')

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

您有一个在“玩游戏”时未修改的静态布尔值

相反,定义一个检查板子状态的函数

def isWin(board):
    return board['1'] == board['2']== board['3']=='X' or ... 

然后在游戏循环中使用它

Board[a] = turn
turn = 'Y' if turn == 'X' else 'X' 
if isWin(Board):
    ... 
    break  # stop the game
相关问题