[英]How can I manipulate this chess notation with python?
我正在嘗試在 python 中使用一些與國際象棋相關的庫(例如 chessnut 和 chess),它們使用以下符號
r1bqkb1r/pppp1Qpp/2n2n2/4p3/2B1P3/8/PPPP1PPP/RNB1K1NR b KQkq - 0 4
我已經搜索過它並沒有找到任何東西。 我如何操作它以及如何將標准代數符號(例如“d4 Nc6 e4 e5 f4 f6 dxe5 fxe5”)轉換為這個新符號?
該符號稱為 FEN( Forsyth–Edwards Notation ),看起來 python-chess 知道並可以解析它。
這種表示法並不真正等同於移動列表——這是用於指定一個位置,它也可能是一個起始位置。 沒有關於游戲如何達到這一點的完整記錄。
Python-chess 可以將您加載到其中的任何棋盤位置(例如使用 PGN 表示法)轉換為這種表示法。
您可以使用python-chess
來完成這項工作。 這是采用 SAN 字符串並在板上進行這些移動的代碼:
import chess
san = 'd4 Nc6 e4 e5 f4 f6 dxe5 fxe5'
board = chess.Board()
for move_san in san.split(' '):
board.push_san(move_san)
FEN 信息: https : //en.wikipedia.org/wiki/Forsyth–Edwards_Notation
有兩種方法可以從 python 中的 san 獲取 FEN: 使用.pgn
文件:
import chess
import chess.pgn
pgn = open("your_pgn_file.pgn")
game = chess.pgn.read_game(pgn)
board = game.board()
for move in game.mainline_moves():
board.push(move)
print(board.fen())
或從單個 san 主線:
import chess
board = chess.Board()
san_mainline = "d4 Nc6 e4 e5 f4 f6 dxe5 fxe5"
for move in san_mainline.split():
board.push_san(move)
print(board.fen())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.