为什么棋子在 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))

将产生所需的输出。