Aunque veo que no hay mucha actividad en el foro, planteo esta duda por si alguien la puede responder.
Casi todos los ejemplos de pilas engine muestran las escenas con un menu y luego la pantalla de juego. Me gustaria saber como se implementaria en caso de que dicho juego tuviera muchas pantallas. Como cuando el personaje llega al final de una pantalla y pasa a otra. O hay una escalera y baja a la pantalla inferior. Incluso que nuestro personaje caiga por un agujero y aparezca en otra pantalla. Un ejemplo seria como el juego The Maze of Galious.
Todas las pantallas o habitaciones deberian tener las mismas dimensiones, claro.
Hola Hugo. Gracias por responder
La idea es esa, que el juego no pase en una unica escena. Es decir, que el personaje se puede mover por muchas pantallas. Claro esta, que luego deberia respetar en la escena siguiente la coordenada de la pantalla anterior. Para eso, se debe crear un escenario total con una logica. Osea, que si pasa a otra escena no puede haber un muro. Eso es lo complicado.
Imaginemos el juego que pasa en un castillo. Nuestro personaje debe poder subir y bajar escaleras. Para eso deben haber escenas creadas con logica entre ellas.
En todo caso ¿Habria que definir nuestro personaje en cada escena?
Si puedes crear un ejemplo simple te lo agradeceria. Aunque sea muy basico. Que nuestro personaje puede pasear por escenas. Saludos!
#Ejemplo de pasar por varias escenas con logica de entrada y salida
#Si alguien sabe la manera de que no haya de crear el actor en cada escena
#se agradeceria contribuyera para que todos aprendamos
#Jordi Mestres (Alfons del Pou) Agosto 2016, para el foro de Pilas Engine
import pilasengine
pilas = pilasengine.iniciar(titulo="Pasar por escenas con logica")
#Esta variable global es la que nos ayuda a darle logica
entrar_por_izquierda = True
class MiActor(pilasengine.actores.Actor):
def iniciar(self):
self.imagen = ('data/alien.png')
self.y = -220
global entrar_por_izquierda
if entrar_por_izquierda == True: #llamamos a la variable global
self.x = -260 #y se comprueba por donde debe entrar el actor
else:
self.x = 260
self.aprender('limitadoabordesdepantalla')
self.aprender('moverseconelteclado')
class Puerta_izquierda(pilasengine.actores.Actor):
def iniciar(self):
self.imagen = ('data/piedra_media.png')
self.y = -200
self.x = -300
class Puerta_derecha(pilasengine.actores.Actor):
def iniciar(self):
self.imagen = ('data/piedra_media.png')
self.y = -200
self.x = 300
class Escena_izquierda(pilasengine.escenas.Escena):
def iniciar(self):
self.fondo = pilas.fondos.Pasto()
self.pilas.actores.Puerta_derecha()
self.pilas.actores.MiActor()
pilas.colisiones.agregar('MiActor', 'Puerta_derecha', self.pasar_a_derecha)
pilas.avisar('Escena Izquierda')
def pasar_a_derecha(self):
global entrar_por_izquierda #Cambiamos la variable global para
entrar_por_izquierda = True #entrar por el lado correcto, aunque en
pilas.escenas.Escena_centro() #este caso no hacia falta :)
class Escena_centro(pilasengine.escenas.Escena):
def iniciar(self):
self.fondo = pilas.fondos.Volley()
self.pilas.actores.Puerta_izquierda()
self.pilas.actores.Puerta_derecha()
self.pilas.actores.MiActor()
pilas.colisiones.agregar('MiActor', 'Puerta_derecha', self.pasar_a_derecha)
pilas.colisiones.agregar('MiActor', 'Puerta_izquierda', self.pasar_a_izquierda)
pilas.avisar('Escena Central')
def pasar_a_derecha(self):
global entrar_por_izquierda
entrar_por_izquierda = True
pilas.escenas.Escena_derecha()
def pasar_a_izquierda(self):
global entrar_por_izquierda
entrar_por_izquierda = False
pilas.escenas.Escena_izquierda()
class Escena_derecha(pilasengine.escenas.Escena):
def iniciar(self):
self.fondo = pilas.fondos.Pasto()
self.pilas.actores.Puerta_izquierda()
self.pilas.actores.MiActor()
pilas.colisiones.agregar('MiActor', 'Puerta_izquierda', self.pasar_a_izquierda)
pilas.avisar('Escena Derecha')
def pasar_a_izquierda(self):
global entrar_por_izquierda
entrar_por_izquierda = False
pilas.escenas.Escena_centro()
pilas.actores.vincular(Puerta_izquierda)
pilas.actores.vincular(Puerta_derecha)
pilas.actores.vincular(MiActor)
pilas.escenas.vincular(Escena_izquierda)
pilas.escenas.vincular(Escena_centro)
pilas.escenas.vincular(Escena_derecha)
pilas.escenas.Escena_izquierda()
pilas.ejecutar()