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

如何将芬ID转换成棋盘?

顾永福
2023-03-14

所以我想知道怎么才能把一个芬的ID转换到棋盘上。

代码:

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 = [
        ['--', '--', '--', '--', '--', '--', '--', '--'],
        ['--', '--', '--', '--', '--', '--', '--', '--'],
        ['--', '--', '--', '--', '--', '--', '--', '--'],
        ['--', '--', '--', '--', '--', '--', '--', '--'],
        ['--', '--', '--', '--', '--', '--', '--', '--'],
        ['--', '--', '--', '--', '--', '--', '--', '--'],
        ['--', '--', '--', '--', '--', '--', '--', '--'],
        ['--', '--', '--', '--', '--', '--', '--', '--'],
    ]
print(board_to_fen(board))

board_to_fen(board)

我很感激我得到的任何帮助。如果你需要更多的信息,请告诉我。

共有1个答案

翟宏放
2023-03-14

基本上和你做的相反。

fen = 'rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1'

def fen_to_board(fen):
    board = []
    for row in fen.split('/'):
        brow = []
        for c in row:
            if c == ' ':
                break
            elif c in '12345678':
                brow.extend( ['--'] * int(c) )
            elif c == 'p':
                brow.append( 'bp' )
            elif c == 'P':
                brow.append( 'wp' )
            elif c > 'Z':
                brow.append( 'b'+c.upper() )
            else:
                brow.append( 'w'+c )

        board.append( brow )
    return board

from pprint import pprint
pprint( fen_to_board(fen) )
[timr@Tims-Pro:~/src]$ python fen.py
[['bR', 'bN', 'bB', 'bQ', 'bK', 'bB', 'bN', 'bR'],
 ['bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp', 'bp'],
 ['--', '--', '--', '--', '--', '--', '--', '--'],
 ['--', '--', '--', '--', '--', '--', '--', '--'],
 ['--', '--', '--', '--', '--', '--', '--', '--'],
 ['--', '--', '--', '--', '--', '--', '--', '--'],
 ['wp', 'wp', 'wp', 'wp', 'wp', 'wp', 'wp', 'wp'],
 ['wR', 'wN', 'wB', 'wQ', 'wK', 'wB', 'wN', 'wR']]
[timr@Tims-Pro:~/src]$ 
 类似资料:
  • 我正试图用python构建一个简单的国际象棋游戏,我已经创建了一个关于棋子位置的字典。我想把字典改成Forsyth–Edwards符号(FEN)(棋子的位置)。 上述字典应该以FEN返回如下内容: 我写了 哪个返回 这是不正确的。如何调整我的函数以返回期望的输出?

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

  • 问题内容: 是否可以某种方式用于属性值,而不是替换内部HTML内容?例如这个简单的指令 并用作 我希望它翻译成 有什么办法吗,还是我必须使用属性而不是包含? 这是 摆弄例子 问题答案: 像这样: 摆弄。

  • 问题内容: 我在这个项目中使用Rhino的javax.scripting。 我有一个Java方法可返回Java对象(Double,Long,Integer等)。我想从javascript调用该方法,并将结果作为Javascript基本类型引用。但是,javacript会将返回类型识别为Object。 如何强制将其转换为JavaScript原语? 这个问题与http://groups.google.

  • 这是我试图转换成java的代码,但我不理解它,实际上我得到这段代码作为一个答案,但他/她用kotlin给我

  • 我正在开发Laravel5.4的api。我将收到base64格式的图像。如何将base64转换为Laravel中的图像?