我不懂密码,迈克尔·道森的井字游戏

2024-05-13 01:18:47 发布

您现在位置: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

        if EMPTY not in board:
            return TIE

        return None

Tags: to代码inboardforreturnifdef
1条回答
网友
1楼 · 发布于 2024-05-13 01:18:47

这是一种检查董事会状态是否为双赢状态的方法。董事会设有以下指标:

0 1 2
3 4 5
6 7 8

因此,元组in ways to win of(0,1,2)检查第一行是否相同。(0,3,6)元组检查第一列是否完全相同。最后,(0,4,8)检查向下和向右的对角线。它通过您询问的if语句来实现这一点:

if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY:

例如,在(0,3,6)行中,它查看棋盘索引0,将其与棋盘索引3和棋盘索引6进行比较,如果它们都相等,并且不等于空,那么对于填充这些方格的玩家来说,这是一个获胜的条件。你知道吗

空大概是表示两个玩家都没有在那个方格里放置令牌的令牌,所以:

if EMPTY not in board:
    return TIE

基本上说,如果董事会是满的,没有人是赢家,那么这是一个平局。你知道吗

相关问题 更多 >