首页 > 解决方案 > 试图找出我的代码有什么问题

问题描述

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

任何人请解释为什么如果值发生变化,变量的布尔值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')

这个你能帮我吗。

标签: python-3.x

解决方案


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

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

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

推荐阅读