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.