1

我一直在玩 python-chess,我正在加载一个 PGN 文件 (A),从中读取游戏。然后我采取行动,创建第二个更新的 PGN 文件 (B)。我阅读了 B 的最后一步,并想在 A 中进行相同的移动,并用日期对该移动进行评论。

last_move = new_game.end()
last_move_san = last_move.san()
old_last = game.end()
old_last_san = old_last.san()
if last_move_san != old_last_san:
    game.end().board().push_san(last_move_san)
    game.end().comment = datetime.strftime(tdate, "%m/%d")
f_exporter = chess.pgn.FileExporter(temp_pgn)
game.accept(f_exporter)

最终的 PGN 文件显示了最初的游戏,没有从 B 移动。文档说它board()只是生成一个副本,并没有改变实际的游戏。在游戏中添加移动的正确方法是什么?

4

1 回答 1

0

我终于想通了:

    last_move = new_game.end()
    last_move_san = last_move.san()
    old_last = game.end()
    old_last_san = old_last.san()
    if last_move_san != old_last_san:
        new_move = game.end().board().push_san(last_move_san)
        game.end().add_main_variation(new_move, comment = datetime.strftime(tdate, "%m/%d"))

GameNode.add_main_variation()以我需要的方式改变了游戏。

于 2017-02-22T18:26:43.287 回答