使用Python语言和Pygame库,一步步打造自己的五子棋游戏!( 二 )

3. 胜负的决定时刻【使用Python语言和Pygame库,一步步打造自己的五子棋游戏!】在五子棋中,任意五个连续的同色棋子意味着一方的胜利 。因此,is_win方法是至关重要的 。它通过扫描每一行、每一列和两个斜线方向,检查是否存在五个连续的同色棋子 。
# 定义函数,传入当前棋盘上的棋子列表,输出结果,不管黑棋白棋胜 , 都是传回False,未出结果则为Truedef is_win(board):    for n in range(15):        # 判断垂直方向胜利        flag = 0        # flag是一个标签 , 表示是否有连续以上五个相同颜色的棋子        for b in board._board:            if b[n] == 1:                flag += 1                if flag == 5:                    print('黑棋胜')                    return False            else:                # else表示此时没有连续相同的棋子,标签flag重置为0                flag = 0        flag = 0        for b in board._board:            if b[n] == 2:                flag += 1                if flag == 5:                    print('白棋胜')                    return False            else:                flag = 0        # 判断水平方向胜利        flag = 0        for b in board._board[n]:            if b == 1:                flag += 1                if flag == 5:                    print('黑棋胜')                    return False            else:                flag = 0        flag = 0        for b in board._board[n]:            if b == 2:                flag += 1                if flag == 5:                    print('白棋胜')                    return False            else:                flag = 0        # 判断正斜方向胜利        for x in range(4, 25):            flag = 0            for i,b in enumerate(board._board):                if 14 >= x - i >= 0 and b[x - i] == 1:                    flag += 1                    if flag == 5:                        print('黑棋胜')                        return False                else:                    flag = 0        for x in range(4, 25):            flag = 0            for i,b in enumerate(board._board):                if 14 >= x - i >= 0 and b[x - i] == 2:                    flag += 1                    if flag == 5:                        print('白棋胜')                        return False                else:                    flag = 0        #判断反斜方向胜利        for x in range(11, -11, -1):            flag = 0            for i,b in enumerate(board._board):                if 0 <= x + i <= 14 and b[x + i] == 1:                    flag += 1                    if flag == 5:                        print('黑棋胜')                        return False                else:                    flag = 0        for x in range(11, -11, -1):            flag = 0            for i,b in enumerate(board._board):                if 0 <= x + i <= 14 and b[x + i] == 2:                    flag += 1                    if flag == 5:                        print('白棋胜')                        return False                else:                    flag = 0    return True


推荐阅读