我刚刚开始了一个python项目,在这个项目中我制作了一个基于文本的国际象棋游戏。当我打印出棋盘时,事情看起来不是很好。字符太小了,这让它看起来像是被隔开了。另外,棋盘比它的高度要薄得多。我怎么才能真正制作出一个好看的棋盘呢?
我的代码如下所示:
import os, readchar, time, threading, random
global arrowKey
global speed
newchar = ''
arrowKey = {'\x1b[A': 'up'}
class Array:
def __init__(self, x=16, y=8, board=None):
self.pos = ()
self.x = x
self.y = y
grid = [' ' + '_' * self.x]
for _ in range(y):
row = ['|']
for _ in range(x):
row.append(' ')
row.append('|')
grid.append(row)
grid.append(' ' + '‾' * self.x)
self.grid = grid
if board != None:
self.grid = board
def reload(self, say=None):
os.system('clear')
if say != None:
print(say)
p = ''
for i in self.grid:
p = p + ''.join([x for x in i]) + '\n'
print(p)
def insert(self, char, x, y):
self.pos = (x, y)
self.grid[y][x] = char
def move(self, direction, char):
poslist = []
for y, i in enumerate(self.grid):
for x, j in enumerate(i):
if j == char:
poslist.append((x, y))
count = 0
for posx, posy in poslist:
if direction == 'down':
if self.grid[posy + 1][posx] != '‾':
self.insert(' ', posx, posy)
self.insert(char, posx, posy + 1)
self.pos = (posx, posy + 1)
if direction == 'up':
if self.grid[posy - 1][posx] != '_':
self.insert(' ', posx, posy)
self.insert(char, posx, posy - 1)
self.pos = (posx, posy - 1)
if direction == 'left':
if self.grid[posy][posx - 1] != '|':
self.insert(' ', posx, posy)
self.insert(char, posx - 1, posy)
self.pos = (posx - 1, posy)
if direction == 'right':
if self.grid[posy][posx + 1] != '|':
self.insert(' ', posx, posy)
self.insert(char, posx + 1, posy)
self.pos = (posx + 1, posy)
count += 1
def getpos(self, char):
poslist = []
for y, i in enumerate(self.grid):
for x, j in enumerate(i):
if j == char:
poslist.append((x, y))
count = 0
return poslist
class Chess(Array):
def __init__(self):
board = [['|' if i % 2 == 0 else ' ' for i in range(17)] if x % 2 == 0 else ['+' if i % 2 == 0 else '—' for i in range(17)] for x in range(16)]
board.insert(0, ['+' if i % 2 == 0 else '—' for i in range(17)])
super().__init__(board=board)
self.array = super()
board = Chess()
board.array.reload()
很抱歉有些代码看起来有点离题,我重用了我以前的chrome恐龙游戏和井字游戏的一些代码,我原本期望棋盘好看,但正如我所说,它看起来真的很奇怪。
输出如下所示:
也许像this这样的东西会很酷。
2条答案
按热度按时间e5nqia271#
你可以试验板单元宽度,然后你可以得到一些或多或少类似正方形的东西。你也可以通过剪切粘贴图形在板上转弯。例如:
输出:
ghg1uchk2#
通过更改Array类中使用的字符的大小,可以增加用于表示棋子和棋盘的字符的大小。例如,可以使用以下代码将字符的大小增加2倍:
通过将Chess类中使用的字符替换为Unicode字符,可以将Unicode字符用于国际象棋棋子。例如,可以使用以下代码表示具有Unicode字符的国际象棋棋子: