【问题标题】:Why pieces are moving in opposite direction in python-chess为什么棋子在 python-chess 中向相反方向移动
【发布时间】:2022-06-28 06:18:34
【问题描述】:

我有以下 fen RNBK1B1R/PPPPQPPP/5N2/3pP3/4p1p1/2n2n2/ppp2p1p/r1bkqb1r b,它是由图像识别技术生成的。此分基于翻转的棋盘,黑色棋子位于底部。当我查看legal_moves 时,似乎我的棋子轨迹是向后的。有什么方法可以控制我的棋子的方向吗?

这是棋盘的图像以及合法的动作 -

快速 sn-p 打印所有合法移动 -

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))

【问题讨论】:

    标签: python python-chess


    【解决方案1】:

    根据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))
    

    将产生所需的输出。

    【讨论】:

    • 嘿,谢谢您的回复。恐怕分转换不完全正确。原来黑王在d1,转换后到e8而不是d8? imgur.com/CibUYMw
    • 不,转换是正确的。黑皇后从 d8 开始,而不是黑国王。此外,在左侧图像中,国王在 d1,而不是 d8。
    • 是的,反转分是正确的做法。
    猜你喜欢
    • 2020-07-05
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 2019-05-24
    相关资源
    最近更新 更多