Je voudrais porter cette question à Python (Windows + Linux + Mac OS) P>
Comment créer une animation ASCII dans Windows Application de la console utilisant C #? P>
Merci! P>
5 Réponses :
colorama: http://pypi.python.org/pypi/colorama p>
-1 Pour afficher un seul lien comme réponse à une question avec 100 primes.
Je viens de porter mon exemple avec le gif animé à l'animation ASCII à partir de ma réponse ici à Python. Vous devrez installer la bibliothèque Pyglet à partir de ici , car Python n'a malheureusement pas d'animation intégrée -Gif support. J'espère que vous l'aimez :)
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')
Je n'ai pas testé avec Python 3.x, n'a que 2,6 sur mon PC. Si quelqu'un pouvait tester cela sur 3.x: serait formidable.
J'ai essayé cela sur Python 3.5.2, mais malheureusement compilateur indique qu'il existe une erreur comme celle-ci: TypeError: ORD () String attendue de longueur 1, mais Int trouvé. Certaines des réponses dans les États indiquent que la fonction ORD () doit être supprimée. Mais lorsque vous l'avez fait, cela se brise également de la même ligne que: TypeError: les indices de tuple doivent être des entiers ou des tranches, pas flottant. Je crois donc que j'ai besoin de quelqu'un pour tester cela aussi :)
Animation de console simple, testée sur Python3 à Ubuntu. addch () n'aime pas ce caractère non-ASCII, mais cela fonctionne dans 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)
Avez-vous installé Pyglet? Quel message d'erreur s'est-il apparu? Je l'ai testé comme je l'ai dit sous Windows avec Python 2.6 et CMD code> Console et cela a fonctionné.
BTW: Vous n'avez pas nécessairement besoin d'utiliser des malédictions, comme vous voyez dans ma réponse.
Ceci est précisément le genre d'application que j'ai créé asciimatics pour. P>
Il s'agit d'une API de console multiplate-forme avec support pour générer des scènes animées d'un ensemble riche d'effets de texte. Il a été prouvé qu'il fonctionne sur diverses saveurs de Centos et Windows et OSX. P>
Des échantillons de ce qui est possible sont disponibles auprès du Galerie . Voici un exemple similaire au code GIF animé fourni dans d'autres réponses. P>
Je suppose que vous recherchez simplement une façon de faire une animation, mais si vous vouliez vraiment reproduire le train à vapeur, vous pouvez le convertir en sprite et lui donner un chemin qui l'exécute simplement sur l'écran, puis Jouez-le dans le cadre d'une scène. Les explications complètes des objets peuvent être trouvées dans le Docs . P>
Eh bien, j'ai réussi à porter la solution de Port Philip Daubmeier à Python 3 (et a également ajouté la mappage de couleurs). Le principal problème était la fonction ORD, qui devait être laissée de côté, car Python 3 - bytestring Indexing renvoie directement la valeur ASCII, au lieu du caractère à cette position (voir ici et ici ..). J'ai créé un repo git, n'hésitez pas à contribuer (meilleure performance serait souhaitable-> pm pour l'invitation): p>
repo fort>: https://github.com/sebibek/gif2asciiiIa p>