Escenas
Las escenas te permiten dividir el juego en partes reconocibles y que interactúan de manera diferente con el usuario.
Un juego típico tendrá al menos una escena como el menú principal, una presentanción y una pantalla de juego.
Cosas a tener en cuenta
Hay algunas cosas a tener en cuenta a la hora de manejar escenas, porque simplifican mucho el trabajo posterior:
- La escena actual siempre está señalada por el atributo
pilas.escena_actual()
. - Solo puede existir una escena activa a la vez.
La escena Normal
Cuando iniciamos pilas por primera vez se creará
una escena llamada Normal
. Esta escena no
tiene un comportamiento muy elaborado, simplemente
imprime toda la pantalla de azul para que
podamos colocar actores sobre ella y veamos una
escena limpia.
Cambiando el fondo de las escenas
Para hacer una pequeña prueba sobre una escena, podrías ejecutar la siguiente sentencia de código:
pilas.fondos.Volley()
Esto le dará a tu escena una vista mas agradable, porque carga un fondo de pantalla colorido y mas divertido:
o podrías usar un fondo de atardecer:
pilas.fondos.Tarde()
Cómo crear nuevas escenas
Imagina que tienes un juego con dos pantallas, una que simplemente dice "bienvenido" y otra con un personaje para mover.
Claramente tendríamos que hacer dos escenas, e iniciar nuestro juego creando la escena principal.
La primer escena tendríamos que representarla con una clase, que herede de la escena Normal así:
class PantallaBienvenida(pilasengine.escenas.Escena):
def iniciar(self):
self.fondo = self.pilas.fondos.Volley()
pass
def ejecutar(self):
pass
Ahora, para poner en funcionamiento esta escena simplemente tienes que decirle a pilas que esta escena es la activa:
pilas.escenas.vincular(PantallaBienvenida)
pilas.escenas.PantallaBienvenida()
Esto eliminará las escenas almacenadas y se colocará como la escena actual y activa:
Ahora, si quieres salir de la escena, simplemente tendrías que cargar una escena nueva, por ejemplo:
pilas.escenas.Normal()
Es decir, en el momento que creamos la escena aparecerá automáticamente.
Escenas con argumentos
Si quieres crear una escena pasándole un argumento de esta forma:
pilas.escenas.vincular(PantallaBienvenida)
pilas.escenas.PantallaBienvenida("Mi mensaje personalizado")
Lo que necesitas hacer es especificar ese nuevo argumento en el método
iniciar
así:
class PantallaBienvenida(pilasengine.escenas.Escena):
def iniciar(self, mensaje):
pilas.fondos.Pasto()
self.texto = pilas.actores.Texto(mensaje)
def actualizar(self):
self.texto.rotacion += 1
pilas, en este caso, va a tomar el argumento "Mi mensaje personalizado"
y lo
va a enviar al método iniciar
con el nombre mensaje
.