首页 > 解决方案 > 有没有办法将 python 棋盘转换为整数列表?

问题描述

我正在尝试创建一个神经网络来下棋,但首先,我需要将棋盘转换为整数列表。我正在为棋盘和游戏使用python-chess模块。我目前有一个棋盘类,但找不到将其转换为列表的方法。

我曾尝试使用该chess_board.epd()方法,但它返回的格式方案难以转换。

这是我需要的代码:

board = chess.Board()  # Define board object
board.convert_to_int()  # Method I need

现在,用.epd()我得到的方法"rnbqkbnr/pppppppp/8/8/8/5P2/PPPPP1PP/RNBQKBNR b KQkq -"

如您所见,解析和转换为整数列表非常困难,因为有/8/' 和/5P2/.

预期的输出是这样的(逐行):

[4, 2, 3, 5, 6, 3, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, ... -1, -1, -1, -1,-1, -1,-1, -1, -4, -2, -3, -5, -6, -3, -2, -4]

例如,这些可以是整数映射到 peices 的内容:

pawn - 1
knight - 2
bishop - 3
rook - 4
queen - 5
king - 6

白色可以是正整数,黑色可以是负整数。

标签: pythonpython-3.xchesspython-chess

解决方案


这是另一个版本,使用 unicode() 方法:

def convert_to_int(board):
    indices = '♚♛♜♝♞♟⭘♙♘♗♖♕♔'
    unicode = board.unicode()
    return [
        [indices.index(c)-6 for c in row.split()]
        for row in unicode.split('\n')
    ]

推荐阅读