想要创建一个简单的Python国际象棋游戏,陷入困境

问题描述 投票:0回答:2

我需要帮助设置获胜条件的写入逻辑 “当任一玩家的王到达第 8 行时,游戏结束,除非轮到白方且黑方的王位于第 7 行,则黑方有一轮到达第 8 行以平局。”

我已经尝试过了,它一直给我带来吸引力

def check_endgame():
    for i, row in enumerate(board):
        if 'WK' in row:
            if i == 7:
                return "White Wins!"
        if 'BK' in row:
            if i == 7:
                return "Black Wins!" if board[6].count('WK') == 0 else "Draw!"
    return None

我也尝试过这个,但游戏开始时白棋获胜。

def check_endgame():
    for i, row in enumerate(board):
        if 'WK' in row:
            if i == 7:
                if 'BK' in board[6]:
                    return "Draw!"
                else:
                    return "White Wins!"
        if 'BK' in row:
            if i == 7:
                return "Black Wins!"
    return None
python computer-science chess python-chess
2个回答
0
投票

这正如您所描述的那样,尽管它不检查白色的回合与黑色的回合。你还没有告诉我们这件事。

def check_endgame():
    if 'WK' in board[7]:
        if 'BK' in board[6]:
            return "Draw!"
        else:
            return "White Wins!"
    if 'BK' in board[7]:
        return "Black Wins!"
    return None

0
投票

根据您的描述,中奖条件如下:

如果白棋的王到达第 7 行,白棋获胜。 如果黑方的王到达第七行,黑方获胜。 如果轮到白方且黑方的王位于第 6 行,则黑方有一轮到达第 7 行以平局。 以下是实现此逻辑的方法:

def check_endgame():
    white_king_row = None
    black_king_row = None

    for i, row in enumerate(board):
        if 'WK' in row:
            white_king_row = i
        if 'BK' in row:
            black_king_row = i

    if white_king_row == 7:
        return "White Wins!"
    elif black_king_row == 7:
        return "Black Wins!"
    elif white_king_row == 6 and 'WK' in board[6]:
        return "Draw!"
    
    return None

此代码首先识别白色和黑色国王所在的行。然后我们一步步检查条件:

如果白棋的王在第七行,则白棋获胜。 如果黑方的王在第七行,则黑方获胜。 如果轮到白方且黑方的王在第 6 行,我们检查白方的王是否出现在第 6 行。如果是,则平局。

如果以上条件都不匹配,则游戏继续,我们返回 None 表示尚未达到游戏结束条件。

您可以将此 check_endgame() 函数与其余的国际象棋游戏逻辑集成。

© www.soinside.com 2019 - 2024. All rights reserved.