好吧,我正在使用Python开发一个项目,这是我的第一个REAL Python项目。现在,我的问题:图形。我认为简约的方式将是Dwarf Fortress风格的图形,每个瓷砖都是一个ASCII颜色的字母。现在,我有办法做到这一点,但我认为它不会非常有效。这是我的代码:
import os
import time
import random
clear = lambda: os.system('clear')
g = '\033[32m' + '# '
t = '\033[31m' + '^ '
l = [g, g, g, g, g, g,
g, g, g, g, g, g,
g, g, g, g, g, g,
g, g, g, g, g, g,
g, g, g, g, g, g,
g, g, g, g, g, g]
def level():
i = 0
while i < 1000:
print l[0] + l[1] + l[2] + l[3] + l[4] + l[5]
print l[6] + l[7] + l[8] + l[9] + l[10] + l[11]
print l[12] + l[13] + l[14] + l[15] + l[16] + l[17]
print l[18] + l[19] + l[20] + l[21] + l[22] + l[23]
print l[24] + l[25] + l[26] + l[27] + l[28] + l[29]
print l[30] + l[31] + l[32] + l[33] + l[34] + l[35]
i += 1
for b in l:
ch = round(random.random())
if ch:
l[l.index(b)] = g
else:
l[l.index(b)] = t
clear()
level()
我从堆栈溢出的地方得到了清楚的东西,但它不应该在Windows上工作,考虑到在windows上clear命令是'clr'而在Mac和Linux上它是'clear'。 Helpature?
编辑 - '问题不是颜色,而是印刷。基本上,我怎么打印它所以我不需要清除屏幕,如何打印,只需更改它,或者其他什么。
答案 0 :(得分:3)
据我所知,所有这种基于ASCII的终端图形操作通常都是使用Curses library完成的,所以我建议你试试。
文档说明“ curses库保留两个数据结构,一个表示当前的物理屏幕内容,一个虚拟屏幕表示所需的下一个状态.doupdate()地面更新物理屏幕以匹配虚拟屏幕。“这似乎正是你想要的。您只需将您想要的任何内容绘制到虚拟屏幕中,一旦准备就绪,您可以调用curses.doupdate()
功能来更新物理屏幕以匹配虚拟屏幕。
答案 1 :(得分:0)
ANSI Escape代码在Windows上不起作用,除非您安装了一些工具来启用它。
由于您使用的是Python,我在SO(问题Print in terminal with colors using Python?)找到了您的解决方案
转到colorama:http://pypi.python.org/pypi/colorama。只需安装它(它非常简单)就可以了。