Cambios de pantalla en pygame [PYTHON] Algunas dudas...
Publicado: 12 Sep 2018, 21:01
Hola de nuevo! Aunque hacia tiempo que no posteaba, suelo visitar el foro bastante a menudo. Como buen amante del ZX Spectrum
Bueno...tengo en mente crear un pequeño videojuego usando el modulo pygame de Python. En su dia ya comente un poco el tema en el foro, pero tuve que dejar apartado el asunto. Probe algun software de creacion de juegos, pero el lenguaje que se utilizaba no me gustaba. Y tambien pocos usan Python en sus motores. Busco hacer algo sencillo y me encanta este lenguaje. Por eso he vuelto de nuevo a pygame.
Como es normal se empieza en el tema de la creacion de la ventana de juego, el bucle de juego, los eventos, el dibujado en pantalla y cosas de ese tipo. Y el problema viene ahí...que en pocos sitios se enseña una clase de tipo director para manejar el cambio de pantallas. Es decir, las que visita nuestro jugador. Y cuando explican estas clases son temas tan avanzados que uno se pierde.
Cabe decir que uso la programacion orientada a objetos. Creo que la forma de plantearlo seria crear una clase llamada escena o pantalla base y de ahi ir instanciando las nuevas pantallas. Pero claro, dentro de esas pantallas nuevas que se fueran recorriendo se deberia actualizar todo. Sin mencionar la programacion de nuevos enemigos, decorados, eventos, etc...y ahi es donde me pierdo. Crear todo esto en una sola pantalla es facil, ya que el bucle del juego funciona en ella. Pero al crear nuevas ¿Como se pasa todo eso a las mismas?
En el siguiente enlace se crea algo parecido a lo que me refiero. Pero desde mi punto de vista no es correcto. Cada cuarto hereda de la clase Cuarto. Cuando son pocos puede ser viable ¿Pero que pasa si son 200 cuartos? ¿200 clases?
A mi modo de ver se deberia instanciar cuartos de una clase Cuarto y no crear tantas clases. Y claro, lo complicado es dar logica a todo este viaje entre pantallas o cuartos.
Supongo que hay muchas maneras de hacer esto. Pero por lo que he visto por la web, o son muy chusqueras o la gente pone implementaciones muy avanzadas.
Este es el enlace donde no lo veo del todo correcto. Aunque funcionar, funciona. Eso si, para dos o tres pantallas. Y con excesos de IFs.
http://programarcadegames.com/python_examples/show_file.php?lang=es&file=maze_runner.py
Venga, un saludo!

Bueno...tengo en mente crear un pequeño videojuego usando el modulo pygame de Python. En su dia ya comente un poco el tema en el foro, pero tuve que dejar apartado el asunto. Probe algun software de creacion de juegos, pero el lenguaje que se utilizaba no me gustaba. Y tambien pocos usan Python en sus motores. Busco hacer algo sencillo y me encanta este lenguaje. Por eso he vuelto de nuevo a pygame.
Como es normal se empieza en el tema de la creacion de la ventana de juego, el bucle de juego, los eventos, el dibujado en pantalla y cosas de ese tipo. Y el problema viene ahí...que en pocos sitios se enseña una clase de tipo director para manejar el cambio de pantallas. Es decir, las que visita nuestro jugador. Y cuando explican estas clases son temas tan avanzados que uno se pierde.
Cabe decir que uso la programacion orientada a objetos. Creo que la forma de plantearlo seria crear una clase llamada escena o pantalla base y de ahi ir instanciando las nuevas pantallas. Pero claro, dentro de esas pantallas nuevas que se fueran recorriendo se deberia actualizar todo. Sin mencionar la programacion de nuevos enemigos, decorados, eventos, etc...y ahi es donde me pierdo. Crear todo esto en una sola pantalla es facil, ya que el bucle del juego funciona en ella. Pero al crear nuevas ¿Como se pasa todo eso a las mismas?
En el siguiente enlace se crea algo parecido a lo que me refiero. Pero desde mi punto de vista no es correcto. Cada cuarto hereda de la clase Cuarto. Cuando son pocos puede ser viable ¿Pero que pasa si son 200 cuartos? ¿200 clases?

A mi modo de ver se deberia instanciar cuartos de una clase Cuarto y no crear tantas clases. Y claro, lo complicado es dar logica a todo este viaje entre pantallas o cuartos.
Supongo que hay muchas maneras de hacer esto. Pero por lo que he visto por la web, o son muy chusqueras o la gente pone implementaciones muy avanzadas.
Este es el enlace donde no lo veo del todo correcto. Aunque funcionar, funciona. Eso si, para dos o tres pantallas. Y con excesos de IFs.
http://programarcadegames.com/python_examples/show_file.php?lang=es&file=maze_runner.py
Venga, un saludo!
