我不明白代码,迈克尔·道森的Tic Tac Toe游戏

时间:2015-07-08 14:40:35

标签: 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

1 个答案:

答案 0 :(得分:2)

这是一种检查董事会状态是否为胜利状态的方法。董事会安排有以下指数:

0 1 2
3 4 5
6 7 8

因此,获胜(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进行比较,如果它们彼此相等且不等于EMPTY那么这是一个任何玩家填补这些广场的胜利条件。

空可能是说两个玩家都没有在该方格中放置一个标记的标记,所以:

if EMPTY not in board:
    return TIE

基本上说,如果董事会已满并且没有人是胜利者,那么这就是平局。