为什么棋子在 python-chess 中朝相反的方向移动
Why pieces are moving in opposite direction in python-chess
我有以下 RNBK1B1R/PPPPQPPP/5N2/3pP3/4p1p1/2n2n2/ppp2p1p/r1bkqb1r b
是从图像识别技术生成的。这分是基于一个翻转的棋盘,黑色棋子在底部。当我检查 legal_moves
时,我的棋子轨迹似乎是倒退的。有什么办法可以控制棋子的方向吗?
这是棋盘的图像以及合法的移动 -
打印所有合法移动的快速片段 -
import chess
def legalMoves(board):
legMovesDict = {}
for lm in board.legal_moves:
src, des = lm.from_square, lm.to_square
src, des = chess.square_name(src).upper(), chess.square_name(des).upper()
if src not in legMovesDict.keys():
legMovesDict[src] = [des]
else:
if des not in legMovesDict[src]:
legMovesDict[src].append(des)
# print(src, des)
return legMovesDict
board = chess.Board('RNBK1B1R/PPPPQPPP/5N2/3pP3/4p1p1/2n2n2/ppp2p1p/r1bkqb1r b')
print(legalMoves(board))
根据this answer,您可以将板子的FEN表示法的第一个字段取反来纠正倒置。
所以,这个:
fen = 'RNBK1B1R/PPPPQPPP/5N2/3pP3/4p1p1/2n2n2/ppp2p1p/r1bkqb1r b'
fields = fen.split(' ')
fields[0] = fields[0][::-1]
flipped_fen = ' '.join(fields)
board = chess.Board(flipped_fen)
print(legalMoves(board))
将产生所需的输出。
我有以下 RNBK1B1R/PPPPQPPP/5N2/3pP3/4p1p1/2n2n2/ppp2p1p/r1bkqb1r b
是从图像识别技术生成的。这分是基于一个翻转的棋盘,黑色棋子在底部。当我检查 legal_moves
时,我的棋子轨迹似乎是倒退的。有什么办法可以控制棋子的方向吗?
这是棋盘的图像以及合法的移动 -
打印所有合法移动的快速片段 -
import chess
def legalMoves(board):
legMovesDict = {}
for lm in board.legal_moves:
src, des = lm.from_square, lm.to_square
src, des = chess.square_name(src).upper(), chess.square_name(des).upper()
if src not in legMovesDict.keys():
legMovesDict[src] = [des]
else:
if des not in legMovesDict[src]:
legMovesDict[src].append(des)
# print(src, des)
return legMovesDict
board = chess.Board('RNBK1B1R/PPPPQPPP/5N2/3pP3/4p1p1/2n2n2/ppp2p1p/r1bkqb1r b')
print(legalMoves(board))
根据this answer,您可以将板子的FEN表示法的第一个字段取反来纠正倒置。
所以,这个:
fen = 'RNBK1B1R/PPPPQPPP/5N2/3pP3/4p1p1/2n2n2/ppp2p1p/r1bkqb1r b'
fields = fen.split(' ')
fields[0] = fields[0][::-1]
flipped_fen = ' '.join(fields)
board = chess.Board(flipped_fen)
print(legalMoves(board))
将产生所需的输出。