2008-09-20 23 views
6

Estoy tratando de escribir una consola (como en la terminal, no en la consola de videojuegos) pong game en python y estoy teniendo problemas para encontrar la mejor forma de (re) dibujar el juego.¿Cuál es la mejor manera de dibujar en la consola?

Estaba pensando en tener una matriz 2d como una especie de mapa de bits, editando la matriz para reflejar las nuevas posiciones bola/paletas y luego fundir cada fila en una cadena e imprimirla. Sin embargo, eso significa que los viejos "marcos" permanecerán, y si las dimensiones del juego son más pequeñas que la ventana de la consola, los marcos antiguos seguirán siendo visibles.

¿Hay alguna manera de eliminar caracteres de la consola? '\ b' He oído que no es confiable.

¿O existe una ruta alternativa más fácil para enviar a la consola para este tipo de aplicación?

+0

Esto no responde a su pregunta, pero ¿por qué no usar [PyGame] (http: // www.pygame.org/news.html)? PyGame hace muy bien crear juegos basados ​​en sprites de Draw 2d. – Corey

Respuesta

6

Parece que hay un puerto curses/biblioteca para Python:

https://docs.python.org/library/curses.html

+2

No olvide especificar que esto no funciona en Windows. – sorin

+0

¿Qué te hace decir eso?La página del módulo python indica "Si bien las maldiciones son las más utilizadas en el entorno Unix, las versiones están disponibles para DOS, OS/2 y posiblemente también para otros sistemas". –

0

Me gustaría investigar utilizando el módulo curses. Se ocupará de muchos detalles y te permitirá concentrarte en las cosas de más alto nivel.

3

En realidad, hay dos bibliotecas que resolver esto, el viejo y el nuevo cursesS-Lang. Curses tiene una tendencia a hacer arte con líneas defectuosas, especialmente en Windows y en consolas Unicode (su soporte Unicode es una mierda). S-Lang screen management functions son mejores.

Si bien no he usado ninguno de ellos en Python, y parece que curses es mejor soportado, en C al menos estoy cambiando mi código a S-Lang debido a esos problemas, y porque en el fondo nunca lo hice le gustó la API de maldiciones.

0

Recientemente he estado desarrollando un paquete de animación ASCII (https://github.com/peterbrittain/asciimatics) que se enfrentó a problemas similares. Si bien no tiene todo lo que necesita para escribir un juego, debería darle la mayor parte de lo que desea.

La clase Sprite en particular lo ayudará a manejar problemas de redibujado. Hay muchas muestras para ayudarlo a comprender varias formas de usarlas y otros efectos en el paquete. He aquí una pequeña demostración pongo juntos como un homenaje a uno de mis juegos favoritos de antaño ...

Pac man

Cuestiones relacionadas