井字游戏由迈克尔道森的电脑移动功能

2024-04-25 21:28:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我会尽力描述这个问题,但我已经很困惑了!这就是获胜的功用:

def winner(board):
    WAYS_TO_WIN = ((0, 1, 2),
                   (3, 4, 5),
                   (6, 7, 8),
                   (0, 3, 6),
                   (1, 4, 7),
                   (2, 5, 8),
                   (0, 4, 8),
                   (2, 4, 6))

    for row in WAYS_TO_WIN:
        if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY:
            winner = board[row[0]]
            return winner

这是计算机移动函数中的循环,看看一台计算机是否能赢,如果能赢,那么采取移动:

for move in legal_moves(board):
    board[move] = computer
    if winner(board) == computer:
        print(move)
        return move

我的问题是,winner函数检查所有要赢的组合,并且只返回赢的比赛的第一个部分,即(3,4,5)win只返回'3'作为赢家,因为winner=board[row[0]]

如果获胜的计算机移动在board[row[2]],并且winner函数返回board[row[0]],那么即使是赢的移动,也不会匹配条件if winner(board) == computer?你知道吗


Tags: to函数inboardformovereturnif
1条回答
网友
1楼 · 发布于 2024-04-25 21:28:40

第一个函数是检查任何获胜组合的3个单元格是否具有相同的值,这不是EMPTY,并返回值,该值可以是播放器或计算机。你知道吗

电脑模拟每一个合法的动作,看他是否用这个动作赢,如果他找到一个使他赢的动作,他就这样做。你知道吗

例如:

player computer EMPTY
EMPTY  computer player
EMPTY  EMPTY    player

计算机将检查是否有任何一个空单元格使他获胜,当他填满中心的EMPTY单元格时会发生什么,从而使他不得不采取行动才能到达获胜的位置。你知道吗

相关问题 更多 >