我正在制作一个国际象棋游戏,我希望它能够在打印控制台中完全渲染。是的,我知道做一些 PyGame 或 TKinter 更有意义,但这不是我的目标。
我发现了一些 Windows 内置的国际象棋表情符号,所以这就是我用于棋子的表情符号。下面是我的代码:
letters = ["::", "wP", "wB", "wN", "wR", "wQ", "wK", "bP", "bB", "bN", "bR", "bQ", "bK"]
symbols = ["*", "♙", "♗", "♘", "♖", "♕", "♔", "♟", "♝", "♞", "♜", "♛", "♚"]
board = [
["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"]
]
def compile_board(board_grid):
compiled_board = """"""
for rank in board_grid:
for square in rank:
compiled_board += f"{symbols[letters.index(square)]} "
compiled_board += "\n"
return compiled_board
print_board = compile_board(board)
print(print_board)
如果你运行它,你会发现符号没有对齐。我认为这可以归结为表情符号与字符的尺寸不同。
我尝试使用字母(例如:黑骑士是bN,白主教是wB)并使用“::”作为间隔符,一切都完美排列。所以我知道这不是我的代码的问题。我真的不想删除字符而只是使用字母。我还想在每个方格上标记一些东西(即使是空的),以便主教和皇后的动作可见。
所以我想我的问题是:如何制作自定义长度的字符,或格式化现有字符以匹配表情符号的宽度?
您可以使用全角unicode字符。以下是使用全角 A 作为间距的示例:
symbols = ["\uff21", "♙", "♗", "♘", "♖", "♕", "♔", "♟", "♝", "♞", "♜", "♛", "♚"]
它打印出来是这样的:
♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜
♟ ♟ ♟ ♟ ♟ ♟ ♟ ♟
A A A A A A A A
A A A A A A A A
A A A A A A A A
A A A A A A A A
♙ ♙ ♙ ♙ ♙ ♙ ♙ ♙
♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖