我正在尝试使用“python-chess”包构建一个国际象棋引擎
我的问题是我想为游戏添加变体,所以我使用了以下方法:
add_variation(move: chess.Move, *, comment: str = '', starting_comment: str = '', nags: Iterable[int] = []) → chess.pgn.ChildNode
如果我有一个有动作的游戏。
1. e4 e5 2. Nf3 Nf6
然后我可以做第一步:
pgn = io.StringIO("1. e4 e5 2. Nf3 Nf6 *")
game = chess.pgn.read_game(pgn)
board = game.board()
for move in game.mainline_moves():
board.push(move)
node0 = game.add_variation(chess.Move.from_uci("d2d4"))
node = node0.add_variation(chess.Move.from_uci("d7d5"))
node = node.add_variation(chess.Move.from_uci("g1f3"))
node2 = game.add_variation(chess.Move.from_uci("a2a4"))
print(game)
它会显示
1. e4 ( 1. d4 d5 2. Nf3 ) ( 1. a4 ) 1... e5 2. Nf3 Nf6 *
然后我有两个节点用于第一步。(一个以移动“d4”开始,一个以移动“a4”开始)
我的问题是我找不到任何其他动作的方法。那么例如,如果我想将节点添加到移动中,该怎么做2. Nf3
?