我想从一个文本文件(使用python国际象棋库)中读取一个游戏,然后按顺序打印其中的移动(每次移动一个字符串)
所以,假设我有一个pgn文件,其中有一个游戏有以下动作
1。f3 e5 2。g4 Qh4#
。。。我想迭代这些动作,并逐个打印它们(使用for循环或类似的方法),显示
f3
e5
g4
Qh4
我在这里找到了python国际象棋的文档: https://python-chess.readthedocs.io/en/latest/
从文件中我了解到
但是我发现这类文档很难阅读,并且会通过示例得到很大帮助
我所做的是从pgn文件中读取一个游戏,并使用变体方法一次性打印所有移动(而不是逐个打印)
import chess.pgn
pgn = open('I:\myfile.pgn')
my_game = chess.pgn.read_game(pgn)
print(my_game.variation(0))
迭代主线移动
^{} 的文档中有一个迭代移动的示例。要将移动转换回标准代数表示法,上下文需要位置,因此我们还需要在
board
上进行所有移动访客
上面的示例将整个游戏解析为一个数据结构(
game: chess.pgn.Game
)。访问者允许跳过该中间表示,这对于使用自定义数据结构或作为优化非常有用。但这似乎有点过分了尽管如此,为了完整性:
注意,这也以PGN顺序遍历side variations
相关问题 更多 >
编程相关推荐