当前位置: 首页 > 知识库问答 >
问题:

从Python中的位置数组生成棋盘图?

令狐献
2023-03-14
['em', 'bn', 'em', 'wr', 'em', 'wp', 'em', 'em']
['br', 'em', 'bp', 'em', 'em', 'bn', 'wn', 'em']
['em', 'em', 'bp', 'bp', 'bp', 'em', 'wp', 'bp']
['bp', 'bp', 'em', 'bp', 'wn', 'em', 'wp', 'em']
....

“b”和“w”表示黑和白。

N:骑士
R:Rook
P:Pawn
B:Bishop
K:King
Q:queen

我想知道是否有一些实用程序,可以采取这个数组或类似的东西,并生成一个棋盘的图片。有很多板生成器工作在FEN或PGN符号,但我没有访问这些。我确实在谷歌上做了很多搜索,但什么也找不到。

谢谢你!

共有1个答案

蓬英逸
2023-03-14

将您的表示转换为标准的表示并不难。例如,您可以使用下面这样的函数转换为FEN:

import io

def board_to_fen(board):
    # Use StringIO to build string more efficiently than concatenating
    with io.StringIO() as s:
        for row in board:
            empty = 0
            for cell in row:
                c = cell[0]
                if c in ('w', 'b'):
                    if empty > 0:
                        s.write(str(empty))
                        empty = 0
                    s.write(cell[1].upper() if c == 'w' else cell[1].lower())
                else:
                    empty += 1
            if empty > 0:
                s.write(str(empty))
            s.write('/')
        # Move one position back to overwrite last '/'
        s.seek(s.tell() - 1)
        # If you do not have the additional information choose what to put
        s.write(' w KQkq - 0 1')
        return s.getvalue()

在某些电路板数据上进行测试:

board = [
    ['bk', 'em', 'em', 'em', 'em', 'em', 'em', 'em'],
    ['em', 'bn', 'em', 'wr', 'em', 'wp', 'em', 'em'],
    ['br', 'em', 'bp', 'em', 'em', 'bn', 'wn', 'em'],
    ['em', 'em', 'bp', 'bp', 'bp', 'em', 'wp', 'bp'],
    ['bp', 'bp', 'em', 'bp', 'wn', 'em', 'wp', 'em'],
    ['em', 'em', 'em', 'em', 'em', 'em', 'em', 'em'],
    ['em', 'em', 'em', 'wk', 'em', 'em', 'em', 'em'],
    ['em', 'em', 'em', 'em', 'em', 'em', 'em', 'em'],
]
print(board_to_fen(board))
# k7/1n1R1P2/r1p2nN1/2ppp1Pp/pp1pN1P1/8/3K4/8 w KQkq - 0 1

例如在chess.com中可视化FEN字符串会生成:

 类似资料:
  • 我遇到了从大数据中拆分阵列的问题。我有一组数据,形状是(86594,12)。 我想把它拆分,这样我就可以从数据中创建一个新的数组。如果新数组的形状为(10,12),那么我将把该数组放入8659。请告诉我如何在python中做到这一点?我的预期结果将是形状为(10,12)的8659数组,所以不是在(86594,12)的整个数据数组中

  • 我正在做一个项目,在那里我采取一个象棋棋盘位置(FEN字符串转换成二进制)&它的评估分数,并将它馈送给一个神经网络。我的目的是让神经网络区分好的和坏的仓位。 我是如何编码位置的:国际象棋中有12个独特的棋子,即棋子,棋子,骑士,主教,王后和国王,白棋和黑棋一样。我使用4位编码每一个片段,其中0000表示一个空的正方形。所以64个方块被编码成256位,我用另外6位来表示游戏状态,比如轮到谁移动,国王

  • 本文向大家介绍c# 绘制中国象棋棋盘与棋子,包括了c# 绘制中国象棋棋盘与棋子的使用技巧和注意事项,需要的朋友参考一下 本文是利用C# 实现中国象棋的棋盘绘制,以及初始化布局,并不实现中国象棋的对弈逻辑。仅供学习参考使用。 思路: 绘制中国象棋棋盘,竖线九条,横线十条。再中间绘制‘楚河',‘汉界' 。 绘制棋子,然后将棋子布局在棋盘上即可。 涉及知识点: 用户控件:用于实现棋盘的绘制,重写 OnP

  • 本文向大家介绍python输出国际象棋棋盘的实例分享,包括了python输出国际象棋棋盘的实例分享的使用技巧和注意事项,需要的朋友参考一下 国际象棋是当今国际上最流行的智力体育运动项目。青年人下棋可以锻炼思维、增强记忆力和培养坚强的意志;中年人下棋可以享受美学;老年下棋可以很好的休息娱乐。国际象棋游戏有自己的规则,需要两个人将棋子落在棋盘上。 棋子落在棋盘上事件,在计算机看来,是一段程序,而这些程

  • 我正在尝试创建一个神经网络来下棋,但首先,我需要将棋盘转换为整数列表。我正在使用国际象棋棋盘和游戏的python国际象棋模块。我目前有一个国际象棋棋盘类,但找不到将其转换为列表的方法。 我试过使用方法,但它返回的格式方案很难转换。 下面是我需要的代码: 现在,使用我得到的方法 如您所见,解析并转换为整数列表非常困难,因为有和。 预期的输出是这样的(逐行): 例如,这些可以是映射到PEICE的整数:

  • 我希望TPP是一个数组,每个阈值都有TPP值。打印应该是这样的:TPP是:n1,n2。。。