1

我有以下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))
4

1 回答 1

1

根据这个答案,您可以反转板的 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))

将产生所需的输出。

于 2022-01-01T00:26:14.343 回答