2

我对制作国际象棋算法很感兴趣。为此,我将使用 python-chess 库。然而,为了制作一个好的算法,我需要能够让对手的合法动作返回,即使轮到他们也不行。所以在游戏开始时它会返回

board.legal_moves() -> [A2A4, A2A1, B2B4, B2B1, 等...]

我想知道在游戏开始时我是否可以说类似的话

board.enemy_legal_moves() > [A7A5, A7A6, 等...]

或者如果有任何算法方法我可以做到。感谢您的时间!

4

1 回答 1

1

一个解决方案是从游戏开始就跟踪列表中的合法移动:

legal_moves = []

current_legal_moves = board.legal_moves()
legal_moves.append(current_legal_moves)

然后,您可以通过以下方式简单地获取敌人的合法移动列表:

enemy_legal_moves = legal_moves[-1]

如果你想在游戏的第一步中调用它,这显然是行不通的。如果你真的需要这样做,那么你可以:

  1. 从开始位置切换到黑色并运行 board.legal_moves()。然后获取此列表并添加为起始值,如下所示:legal_moves = [black_legal_moves_start_pos]

  2. 写下黑方从开始位置开始的第 20 个合法移动的列表,并将其添加到legal_moves上面的选项 1 中。

于 2021-02-22T05:52:32.473 回答