在Connect4中找到获胜条件

时间:2017-12-04 17:57:12

标签: python python-3.x

我的程序是类似于connect 4的游戏,但它是一个15x15的主板。获胜条件是5个相邻的部分。如果有5个,则该方法应返回True,否则返回False。现在这是我的水平检查,但它只是跳过我的for循环并返回None。我真正需要的是关于如何让for循环工作的一些建议,因为它们被忽略了

Carbon @1233769590 {#219 ▼
    date: 2009-02-04 17:46:30.0 Europe/London (+00:00)
}

DateTime @1233446400 {#217 ▼
    date: 2009-02-01 00:00:00.0 Europe/London (+00:00)
}

1 个答案:

答案 0 :(得分:1)

您在for循环中呼叫return False。你真的只想在真实案例中这样做。

您还应该查看for:else:construct。

在整个矩阵中搜索后返回False。这就是你的逻辑应该是这样的:

def current_player_is_winner(self):
    ''' Depending on the win_count parameter once that many pieces are adjacendt a winer is declared'''
    print(self.__current_player)
    piece = GoPiece(self.__current_player)
    print(piece)
    win_count = 0

    #Horizontal test
    row = 0
    col = 0
    for col in range(self.__board_size):
        for row in (range(self.__board_size)):
            if self.__go_board[row][col] == piece:
                win_count += 1
                col += 1
                print(win_count)
                if win_count == 5:
                    return True
            else:
                row+=1
                win_count = 0
    return False