我刚刚将我的用ASCII动画替换成动态gif的示例从此处移植到了python。你需要从这里安装pyglet库,因为不幸的是python没有内置的动态gif支持。希望你喜欢它 :)
import pyglet, sys, os, time
def animgif_to_ASCII_animation(animated_gif_path):
# map greyscale to characters
chars = ('#', '#', '@', '%', '=', '+', '*', ':', '-', '.', ' ')
clear_console = 'clear' if os.name == 'posix' else 'CLS'
# load image
anim = pyglet.image.load_animation(animated_gif_path)
# Step through forever, frame by frame
while True:
for frame in anim.frames:
# Gets a list of luminance ('L') values of the current frame
data = frame.image.get_data('L', frame.image.width)
# Built up the string, by translating luminance values to characters
outstr = ''
for (i, pixel) in enumerate(data):
outstr += chars[(ord(pixel) * (len(chars) - 1)) / 255] + \
('\n' if (i + 1) % frame.image.width == 0 else '')
# Clear the console
os.system(clear_console)
# Write the current frame on stdout and sleep
sys.stdout.write(outstr)
sys.stdout.flush()
time.sleep(0.1)
# run the animation based on some animated gif
animgif_to_ASCII_animation(u'C:\\some_animated_gif.gif')
这正是我创建asciimatics的应用场景。
它是一个跨平台的控制台API,支持从丰富的文本效果中生成动画场景。它已被证明可以在各种CentOS、Windows和OSX版本上运行。
可以从图库中获取一些示例。这里有一个示例,类似于其他答案中提供的动画GIF代码。
我想你只是想找到一种动画的方式,但如果你真的想复制蒸汽火车,你可以将其转换为一个Sprite,并给它一个只在屏幕上运行的路径,然后将其作为场景的一部分播放。对象的完整说明可以在文档中找到。
这是一个简单的控制台动画,已在Ubuntu下使用Python3测试。 addch()不支持非ASCII字符,但在addstr()中可以正常工作。
#this comment is needed in windows:
# encoding=latin-1
def curses(win):
from curses import use_default_colors, napms, curs_set
use_default_colors()
win.border()
curs_set(0)
row, col = win.getmaxyx()
anim = '.-+^°*'
y = int(row / 2)
x = int((col - len(anim))/2)
while True:
for i in range(6):
win.addstr(y, x+i, anim[i:i+1])
win.refresh()
napms(100)
win.addch(y, x+i, ' ')
if __name__ == "__main__":
from curses import wrapper
wrapper(curses)
@Philip Daubmeier:我在Windows下测试了这个,但它不起作用:(。未来有三种基本选择:(请选择)
cmd
控制台测试过,它可以工作。 - Philip Daubmeier