[TUTORIAL] Creacion de MENU y ESCENAS en 8 pasos

Buenas!

Dado que tanta gente se interesa en los temas de creación de Menús y escenas, aquí dejo un tutorial explicado paso a paso, y creo que MUY facil de seguir. :smile:

Empezamos:

1.- Lo básico, abrimos nuestro editor preferido y escribimos:

# -*- encoding: utf-8 -*-
import pilasengine

pilas = pilasengine.iniciar()


pilas.ejecutar()

2.- Creamos las escenas, y las VINCULAMOS.

# -*- encoding: utf-8 -*-
import pilasengine

pilas = pilasengine.iniciar()

class EscenaMenu(pilasengine.escenas.Escena):
	def iniciar(self):
		pass
	def actualizar(self):
		pass

class EscenaJuego(pilasengine.escenas.Escena):
	def iniciar(self):
		pass
	def actualizar(self):
		pass	

pilas.escenas.vincular(EscenaMenu)  <----vinculamos
pilas.escenas.vincular(EscenaJuego) <----vinculamos

pilas.ejecutar()

3.- Vamos a indicar que escena se va a reproducir de entrada:

# -*- encoding: utf-8 -*-
import pilasengine

pilas = pilasengine.iniciar()

class EscenaMenu(pilasengine.escenas.Escena):
	def iniciar(self):
		pass
	def actualizar(self):
		pass

class EscenaJuego(pilasengine.escenas.Escena):
	def iniciar(self):
		pass
	def actualizar(self):
		pass	

pilas.escenas.vincular(EscenaMenu)
pilas.escenas.vincular(EscenaJuego)

pilas.escenas.EscenaJuego() # <-----indicamos

pilas.ejecutar()

4.- Vamos a hacer la EscenaJuego:
un fondo, un actor, un boton para volver a menu:

# -*- encoding: utf-8 -*-
import pilasengine

pilas = pilasengine.iniciar()

class EscenaMenu(pilasengine.escenas.Escena):
	def iniciar(self):
		pass
	def actualizar(self):
		pass

class EscenaJuego(pilasengine.escenas.Escena):
	def iniciar(self):
		self.fondo_juego = pilas.fondos.Tarde()
		
		self.Mi_Actor = pilas.actores.Mono()
		self.Mi_Actor.decir('Hola, estamos en la escena del juego !!!')
		
		self.Boton_Volver =pilas.interfaz.Boton('Volver al Menu')
		self.Boton_Volver.y = -100
		
		#conectamos el boton...
		self.Boton_Volver.conectar(self.Volver)
		
		#con la funcion que nos lleva al Menu:
	def Volver(self):	
		pilas.escenas.EscenaMenu()
		
	def actualizar(self):
		pass	

pilas.escenas.vincular(EscenaMenu)
pilas.escenas.vincular(EscenaJuego)

pilas.escenas.EscenaJuego()

pilas.ejecutar()

Bien, hasta ahora tenemos una escena donde hacer nuestro juego,
con un botón para salir al menu principal.

5.- Ahora la escena del Menú:

# -*- encoding: utf-8 -*-
import pilasengine

pilas = pilasengine.iniciar()

class EscenaMenu(pilasengine.escenas.Escena):
	def iniciar(self):
		#le ponemos un fondo:
		self.fondo_menu = pilas.fondos.Volley()
		
		#Le ponemos un titulo:
		self.Nombre_de_mi_juego = pilas.actores.Texto(u'MI GRAN JUEGO')
		self.Nombre_de_mi_juego.color = pilas.colores.rojo
		self.Nombre_de_mi_juego.y = 170
				
	def actualizar(self):
		pass

class EscenaJuego(pilasengine.escenas.Escena):
	def iniciar(self):
		self.fondo_juego = pilas.fondos.Tarde()
		
		self.Mi_Actor = pilas.actores.Mono()
		self.Mi_Actor.decir('Hola, estamos en la escena del juego !!!')
		
		self.Boton_Volver =pilas.interfaz.Boton('Volver al Menu')
		self.Boton_Volver.y = -100
		self.Boton_Volver.conectar(self.Volver)
		
	def Volver(self):	
		pilas.escenas.EscenaMenu()
		
	def actualizar(self):
		pass	

pilas.escenas.vincular(EscenaMenu)
pilas.escenas.vincular(EscenaJuego)

pilas.escenas.EscenaJuego()

pilas.ejecutar()

6.- Vamos a hacer el menú. Para ello antes que nada vamos a poner
las funciones del menú, es decir, lo que va a hacer el menu cuando
lo seleccionemos.

En nuestro caso vamos a poner solo dos opciones:
a.- Ir a la escena del juego.
b.- Salir de Pilas.

Pero pueden haber tres, cuatro, o más, depende de lo que cada cual
necesite para su juego…

# -*- encoding: utf-8 -*-
import pilasengine

pilas = pilasengine.iniciar()

class EscenaMenu(pilasengine.escenas.Escena):
	def iniciar(self):
		self.fondo_menu = pilas.fondos.Volley()
		
		Nombre_de_mi_juego = pilas.actores.Texto(u'MI GRAN JUEGO')
		Nombre_de_mi_juego.color = pilas.colores.rojo
		Nombre_de_mi_juego.y = 170
		
				
	def actualizar(self):
		pass
		
	def Salir_de_Pilas(self): # <-----------
		pilas.terminar()	#salimos de pilas y se cierra
		
	def Ir_al_juego(self): #<-------------
		pilas.escenas.EscenaJuego()	# vamos al juego	


class EscenaJuego(pilasengine.escenas.Escena):
	def iniciar(self):
		self.fondo_juego = pilas.fondos.Tarde()
		
		self.Mi_Actor = pilas.actores.Mono()
		self.Mi_Actor.decir('Hola, estamos en la escena del juego !!!')
		
		self.Boton_Volver =pilas.interfaz.Boton('Volver al Menu')
		self.Boton_Volver.y = -100
		self.Boton_Volver.conectar(self.Volver)
		
	def Volver(self):	
		pilas.escenas.EscenaMenu()
		
	def actualizar(self):
		pass	

pilas.escenas.vincular(EscenaMenu)
pilas.escenas.vincular(EscenaJuego)

pilas.escenas.EscenaJuego()

pilas.ejecutar()

Ya tenemos creadas las funciones… ya falta poco!

7.-POR FIN ! Creación del actor Menu.

Creamos el menú DENTRO de la def iniciar(self): de la EscenaMenu

IMPORTANTE: No dejarse ninguna coma, ningun parentesis, ojo
a los corchetes, todo tiene que estar en su sitio y ordenado…

Como ven, creamos al actor Menu.
a la izquierda lo que va a salir por pantalla como texto
a la derecha lo conectamos a las def():

# -*- encoding: utf-8 -*-
import pilasengine

pilas = pilasengine.iniciar()

class EscenaMenu(pilasengine.escenas.Escena):
	def iniciar(self):
		self.fondo_menu = pilas.fondos.Volley()
		
		##############################################
		self.Mi_Menu = pilas.actores.Menu(
			[
				(u'IR  AL JUEGO', self.Ir_al_juego),
				(u'SALIR DE PILAS', self.Salir_de_Pilas)
			])
		##############################################
		
		Nombre_de_mi_juego = pilas.actores.Texto(u'MI GRAN JUEGO')
		Nombre_de_mi_juego.color = pilas.colores.rojo
		Nombre_de_mi_juego.y = 170
		
				
	def actualizar(self):
		pass
		
	def Salir_de_Pilas(self): 
		pilas.terminar()	
		
	def Ir_al_juego(self): 
		pilas.escenas.EscenaJuego()		



class EscenaJuego(pilasengine.escenas.Escena):
	def iniciar(self):
		self.fondo_juego = pilas.fondos.Tarde()
		
		self.Mi_Actor = pilas.actores.Mono()
		self.Mi_Actor.decir('Hola, estamos en la escena del juego !!!')
		
		self.Boton_Volver =pilas.interfaz.Boton('Volver al Menu')
		self.Boton_Volver.y = -100
		self.Boton_Volver.conectar(self.Volver)
		
	def Volver(self):	
		pilas.escenas.EscenaMenu()
		
	def actualizar(self):
		pass	

pilas.escenas.vincular(EscenaMenu)
pilas.escenas.vincular(EscenaJuego)

pilas.escenas.EscenaJuego()

pilas.ejecutar()

Y ya para acabar…

8.- Indicamos que pilas inicie en la escena del Menu. Para eso cambiaremos donde antes habiamos puesto que iniciara en la escena del juego, casi al final de nuestro código…

pilas.escenas.vincular(EscenaMenu)
pilas.escenas.vincular(EscenaJuego)

#pilas.escenas.EscenaJuego() <------- QUITAMOS ESTA
pilas.escenas.EscenaMenu() # <------- Y PONEMOS ESTA.

pilas.ejecutar()

Y ya está, eso es todo… Ha sido facil, verdad ? :wink:

Espero que esto les ayude en la creación de menús y escenas

Un saludo.

3 me gusta

Aplauso :clap:, muy buen tutorial. Crear un menu a veces es medio complicado, pero dejaste muy claro todo.

Saludos

Hola! Quisiera saber cuando se utiliza el comando self, me esta trolleando

Este tema se ha respondido en su propio post.
Por favor, en la medida de lo posible evitad hacer doble post. :confused:
Gracias.

Excelente, me sirve para incluirlo en mis clases, muchas gracias

1 me gusta

Muy bien, excelente. Gracias por la contribución @jordinur