¿Se puede crear un juego con varias pantallas o escenas?

Hola de nuevo!

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.

Saludos!

Hola @Jon, me parece que en tu caso lo mejor sería representar cada una de estas pantallas como un escena aparte, en el manual hay algunos ejemplos:

http://manual.pilas-engine.com.ar/escenas/

Si se te complica avisanos, y armamos algún ejemplo pequeño para ilustrarlo mejor.

Abrazo

Hola Hugo. Gracias por responder :slight_smile:
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!

Algo así???

#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()