我对制作国际象棋算法很感兴趣。为此,我将使用 python-chess 库。然而,为了制作一个好的算法,我需要能够让对手的合法动作返回,即使轮到他们也不行。所以在游戏开始时它会返回
board.legal_moves() -> [A2A4, A2A1, B2B4, B2B1, 等...]
我想知道在游戏开始时我是否可以说类似的话
board.enemy_legal_moves() > [A7A5, A7A6, 等...]
或者如果有任何算法方法我可以做到。感谢您的时间!
我对制作国际象棋算法很感兴趣。为此,我将使用 python-chess 库。然而,为了制作一个好的算法,我需要能够让对手的合法动作返回,即使轮到他们也不行。所以在游戏开始时它会返回
board.legal_moves() -> [A2A4, A2A1, B2B4, B2B1, 等...]
我想知道在游戏开始时我是否可以说类似的话
board.enemy_legal_moves() > [A7A5, A7A6, 等...]
或者如果有任何算法方法我可以做到。感谢您的时间!
一个解决方案是从游戏开始就跟踪列表中的合法移动:
legal_moves = []
current_legal_moves = board.legal_moves()
legal_moves.append(current_legal_moves)
然后,您可以通过以下方式简单地获取敌人的合法移动列表:
enemy_legal_moves = legal_moves[-1]
如果你想在游戏的第一步中调用它,这显然是行不通的。如果你真的需要这样做,那么你可以:
从开始位置切换到黑色并运行 board.legal_moves()。然后获取此列表并添加为起始值,如下所示:legal_moves = [black_legal_moves_start_pos]
写下黑方从开始位置开始的第 20 个合法移动的列表,并将其添加到legal_moves
上面的选项 1 中。