【发布时间】:2021-05-28 10:13:04
【问题描述】:
我正在尝试使用"python-chess"-package 构建一个国际象棋引擎
我的问题是我想给游戏添加变体,所以我用了这个方法:
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,该怎么做?
【问题讨论】:
标签: python nodes variations python-chess