我正在用Python编写一个小RPG,我希望我的不同世界对象有不同的颜色。我曾尝试过探索colorama和一些类似的模块;但是,字符串总是打印成一个小盒子,里面有一些数字和字母,而不是,比方说,蓝色'〜'水瓦片的字符。
我使用如下所示的变量创建我的world数组:
worldArray = [[' ' for i in range(10)] for i in range(10)]
然后我通过几个不同的函数向它添加世界对象,以构建一个随机的世界环境,如下所示:
def replacetiles(self, grid, row, a, b, char, count):
while count:
aShift = 2
row_col_dict = {row: (a, b)}
for row in row_col_dict.keys():
startPos, endPos = row_col_dict[row]
for i in range(startPos, endPos):
grid[row][i] = char
row -= 1
if aShift == 0:
a += random.randint(1, 2)
if count < 3:
b -= (b / 2)
b += random.randint(0, 1)
aShift -=1
count -= 1
这当然都存储在一个类对象中。这个函数是我在世界范围内创建随机海洋的方法,通过调用replacetiles(gamemap, 9, 0, 5, '~', 3)
来代替'~'
的一些索引。
如何在游戏地图中更改'~'
的输出颜色?
编辑:我的问题似乎比列出的其他主题更具体。我遇到的问题是,当我通过colorama或下面的任何答案或在另一个帖子中打印文本时,在一个单独的文件中只打印彩色文本,它的工作原理。但是,当我使用相同的代码更改char
中replacetiles
参数的颜色时,无论使用何种方法更改字符串文本的颜色,我都会得到这个奇数框图标。 / p>
答案 0 :(得分:0)
您可以将ASCII转义码添加到添加到worldArray
的字符串中。要使您的水变蓝,只需将grid[row][i] = char
替换为grid[row][i] = "\033[34m" + char + "\033[0m"
。
有关更多颜色代码,请参阅: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors
然后您可以使用以下方式打印您的世界:
print('\n'.join(' '.join(row) for row in worldArray))
答案 1 :(得分:0)
您可以使用名为termcolor的此软件包,而不是对值进行硬编码。
import sys
from termcolor import colored, cprint
text = colored('Hello, World!', 'red', attrs=['reverse', 'blink'])
print(text)
cprint('Hello, World!', 'green', 'on_red')