Python Chess库调用set_fen()和push()后legal_moves生成错误走法的问题求助
Python Chess库调用set_fen()和push()后legal_moves生成错误走法的问题求助
大家好,我正在用Python Chess库写一个小型的国际象棋GUI。昨天我多次运行代码都没问题,但安装了一些其他Python库后,今天发现了一个奇怪的问题:board.legal_moves生成了错误的走法。我尝试重新安装了Python 3.13.1和最新的Python Chess库,但问题依然存在。
我的代码非常简短:
import chess board = chess.Board() starting_position=board.fen() for move in board.legal_moves: print(starting_position) board.set_fen(starting_position) print(move) board.push(move) print(f' board pushed move {board.fen()}') print()
错误结果从第五步h7h6开始一直到结束,而正确的应该是h2h3。我这里只展示前六个示例:
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 g1h3 board pushed move rnbqkbnr/pppppppp/8/8/8/7N/PPPPPPPP/RNBQKB1R b KQkq - 1 1 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 g1f3 board pushed move rnbqkbnr/pppppppp/8/8/8/5N2/PPPPPPPP/RNBQKB1R b KQkq - 1 1 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 b1c3 board pushed move rnbqkbnr/pppppppp/8/8/8/2N5/PPPPPPPP/R1BQKBNR b KQkq - 1 1 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 b1a3 board pushed move rnbqkbnr/pppppppp/8/8/8/N7/PPPPPPPP/R1BQKBNR b KQkq - 1 1 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 h7h6 board pushed move rnbqkbnr/ppppppp1/7P/8/8/8/PPPPPPPP/RNBQKBNR b KQkq - 0 1 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 g7g6 board pushed move rnbqkbnr/pppppp1p/6P1/8/8/8/PPPPPPPP/RNBQKBNR b KQkq - 0 1
如果我把board.push(move)这部分注释掉,一切就恢复正常了:
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 g1h3 board pushed move rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 g1f3 board pushed move rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 b1c3 board pushed move rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 b1a3 board pushed move rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 h2h3 board pushed move rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1 g2g3 board pushed move rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
另外,如果我注释掉board.set_fen(starting_position),并在循环末尾加上board.pop(),也不会出现错误。
有没有人能给我一些解决建议?非常感谢!
备注:内容来源于stack exchange,提问作者user28471654
相关产品推荐
相关产品推荐

