Я хотел бы перенести этот вопрос на Python (Windows + Linux + Mac Os)
Как создать анимацию ASCII в приложении Windows Console с помощью C #?
Спасибо!
Я хотел бы перенести этот вопрос на Python (Windows + Linux + Mac Os)
Как создать анимацию ASCII в приложении Windows Console с помощью C #?
Спасибо!
Я только что перенес свой пример с анимированным gif в ASCII-анимацию из моего ответа здесь в 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 и дать ему путь, который просто перемещает его по экрану, а затем воспроизвести его как часть сцены. Полное описание объектов можно найти в документации.
Простая консольная анимация, протестированная на python3 в Ubuntu. 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: Я тестировал это в Windoze, и он не работает :(. В будущем есть три основных варианта: (пожалуйста, выберите)
cmd
, и это сработало.
- person Philip Daubmeier; 07.05.2010
Colorama: http://pypi.python.org/pypi/colorama
Что ж, мне удалось перенести решение Филипа Добмейера на python 3 (а также добавил к нему цветовое отображение). Основной проблемой была функция ord, которую нужно было исключить, поскольку индексирование строки байтов в Python 3 возвращает значение ASCII напрямую, а не символ в этой позиции (см. здесь и здесь ..). Я создал репозиторий Git, не стесняйтесь вносить свой вклад (желательна лучшая производительность -> pm для приглашения):
репо: https://github.com/sebibek/gif2ascii