这在某种程度上取决于您所处的平台。最常见的方法是打印 ANSI 转义序列。举一个简单的例子,这里有一些来自blender 构建脚本的 python 代码:
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
要使用这样的代码,你可以做类似的事情
print bcolors.WARNING + "Warning: No active frommets remain. Continue?"
+ bcolors.ENDC
这将适用于包括 OS X,Linux 和 Windows 的unix (如果您使用ANSICON ,或者在 Windows 10 中,只要您启用VT100 仿真 )。有 ansi 代码用于设置颜色,移动光标等。
如果你要复杂化这个(如果你正在编写一个游戏,那听起来就像你一样),你应该查看 “curses” 模块,它可以为你处理很多复杂的部分。 Python Curses HowTO是一个很好的介绍。
如果你没有使用扩展的 ASCII(即不在 PC 上),那么你会遇到 127 以下的 ascii 字符,而 '#' 或 '@' 可能是你阻止的最佳选择。如果您可以确保您的终端使用 IBM 扩展的 ascii 字符集 ,那么您还有更多选择。字符 176,177,178 和 219 是 “块字符”。
一些现代的基于文本的程序,如 “矮人要塞”,在图形模式下模拟文本模式,并使用经典 PC 字体的图像。您可以在Dwarf Fortress Wiki上找到一些可以使用的位图( 用户自制的 tilesets )。
文本模式演示比赛有更多资源用于在文本模式下进行图形处理。
嗯...... 我觉得这个答案有点过分了。不过,我正在计划一个史诗般的基于文本的冒险游戏。祝你的彩色文字好运!
我很惊讶没人提到Python termcolor 模块 。用法非常简单:
from termcolor import colored
print colored('hello', 'red'), colored('world', 'green')
或者在 Python 3 中:
print(colored('hello', 'red'), colored('world', 'green'))
然而,对于游戏编程和你想要做的 “彩色块” 来说,它可能不够复杂......
答案是Colorama用于 Python 中的所有跨平台着色。