Saltar al contenido

¿Cómo crear una animación ASCII en una aplicación de consola usando Python 3.x?

Solución:

Acabo de portar mi ejemplo con el gif animado a la animación ASCII de mi respuesta aquí a Python. Deberá instalar la biblioteca de pyglet desde aquí, ya que, lamentablemente, Python no tiene soporte integrado para gif animados. Espero que te guste 🙂

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')

Este es precisamente el tipo de aplicación para la que creé asciimatics.

Es una API de consola multiplataforma con soporte para generar escenas animadas a partir de un rico conjunto de efectos de texto. Se ha demostrado que funciona en varias versiones de CentOS, Windows y OSX.

Las muestras de lo que es posible están disponibles en la galería. Aquí hay una muestra similar al código GIF animado que se proporciona en otras respuestas.

Imágenes en color

Supongo que solo está buscando una manera de hacer cualquier animación, pero si realmente quisiera replicar el tren de vapor, podría convertirlo en un Sprite y darle una ruta que lo ejecute por la pantalla, luego reproducirlo como parte de una escena. Las explicaciones completas de los objetos se pueden encontrar en los documentos.

Animación de consola simple, probada en python3 en Ubuntu. addch () no le gusta ese carácter no ascii, pero funciona en addedtr ().

#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: He probado esto en Windoze y no funciona :(. Hay tres opciones básicas en el futuro: (elija)

  1. Instale una biblioteca de Windows curses de terceros (http://adamv.com/dev/python/curses/)
  2. Aplicar un parche de Windows-curses a Python (http://bugs.python.org/msg94309)
  3. Abandona por completo las maldiciones por otra cosa.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *