Empecé hace unos dias a probar con esto de pilas y voy a los ponchasos pero bueno ya le voy a agarrar la mano.
Mi problema, aparte de que la documentación es un poco escueta, es que aparentemente no estoy usando bien la clase escena.
La cosa es asi, el juego va a tener varias pantallas: menu, ayuda, y el juego en si mismo que serán dos niveles.
Estuve usando el tutorial de asteroides, hasta que me di cuenta que esta desactualizado pero masomenos entre eso y la docu nueva salieron las dos pantallas (ayuda y menu).
Ambas tienen botones, que hacen conectar una escena con otra, pero en el interprete no me funcionan, si lo corro con python menu.py (x ejemplo) abre la ventana del juego y al hacer click me abre otra ventana con la otra escena.
Y aca pasan dos cosas:
Quiero que todo ocurra en la misma ventana,no en distintas, no tengo idea como hacerlo!
La consola muestra un error (el interprete no) de que a escena le falta un parametro (2 needed 1 given) que es cuando hago pilas.cambiar_escena(menu.EscenaMenu()) x ejemplo
Si me pueden dar una mano para entender mejor que pasa y como arreglarlo se los agradezco mucho y quien sabe si le agarro la mano puedo empezar a contribuir
Hice el cambio que sugeriste y sigo teniendo el mismo problema, abre 1 ventana x escena y tengo el siguiente error:
Traceback (most recent call last):
File “/usr/local/lib/python2.7/dist-packages/pilas-1.1.0-py2.7.egg/pilasengine/widget.py”, line 148, in mousePressEvent
self.pilas.eventos.click_de_mouse.emitir(boton=event.button(), x=x, y=y)
File “/usr/local/lib/python2.7/dist-packages/pilas-1.1.0-py2.7.egg/pilasengine/eventos/evento.py”, line 27, in emitir
respuesta(**evento)
File “/usr/local/lib/python2.7/dist-packages/pilas-1.1.0-py2.7.egg/pilasengine/eventos/evento.py”, line 156, in call
return mtd(AttrDict(evento))
File “/usr/local/lib/python2.7/dist-packages/pilas-1.1.0-py2.7.egg/pilasengine/actores/menu.py”, line 184, in cuando_hace_click_con_el_mouse
self.seleccionar_opcion_actual()
File “/usr/local/lib/python2.7/dist-packages/pilas-1.1.0-py2.7.egg/pilasengine/actores/menu.py”, line 119, in seleccionar_opcion_actual
opcion.seleccionar()
File “/usr/local/lib/python2.7/dist-packages/pilas-1.1.0-py2.7.egg/pilasengine/actores/opcion.py”, line 53, in seleccionar
self.funcion_a_invocar(*self.argumentos)
File “menu.py”, line 39, in ayuda
pilas.escenas.vincular(ayuda.PantallaAyuda())
TypeError: init() takes exactly 2 arguments (1 given)
El c’odigo que estoy manejando es asi:
import pilasengine
pilas = pilasengine.iniciar()
import ayuda
class EscenaMenu(pilasengine.escenas.Escena): #Escena principal donde se encuentra el menu para iniciar o ver ayuda o bien salir del juego #creación de la clase para la nueva pantalla a partir de la clase madre pilas.escena.Escena
def iniciar(self):
#Contenido de la escena principal: logo, menu...
self.set_logo()
self.menu_inicial()
def set_logo(self):
#importamos logo desde carpeta
imagen = pilas.imagenes.cargar("data/logo.png")
logo = pilas.actores.Actor()
logo.imagen = imagen
logo.y = 200
def menu_inicial(self):
#creamos opciones y instanciamos el menu principal
opciones = [
("Ver ayuda", self.ayuda),
("Salir", self.salir_juego)
]
self.menu = pilas.actores.Menu(opciones, y = 0)
def ayuda(self):
#lleva a la pantalla de apilas, yuda
pilas.escenas.vincular(ayuda.PantallaAyuda())
pilas.escenas.ayuda.PantallaAyuda()
def salir_juego(self):
#sale del juego
pilas.terminar()
pilas.escenas.vincular(EscenaMenu)
pilas.escenas.EscenaMenu()
pilas.ejecutar()
Alguien podria indicarme que me esta faltando ? Gracias!
Ya resolvi eso jajaja estaba pasando el parametro con () .
El problema que persiste es el de las multiples ventanas, ahora es peor porque es como que cada vez que vinculo las escenas aunque lo haga para el boton.conectar se ejecutan igual y tengo mil ventanas,
y el error:
Exception: Lo siento, ya exista una escena vinculada con el nombre: PantallaAyuda
Hola @ElitaTnk !!!, recién armé un ejemplo de escenas nuevo para la versión 1.2 de pilas-engine; Te recomiendo ver ese ejemplo en detalle, porque tiene una transición entre dos escenas personalizadas que te van a servir:
def menu_inicial(self):
#creamos opciones y instanciamos el menu principal
opciones = [
("Ver ayuda", self.ayuda), #aqui te falta la u antes de las comillas --> (u"Ver ayuda, self.ayuda)
("Salir", self.salir_juego) #aqui tambien la misma corrección --> (u"Salir", self.salir_juego)
]
self.menu = pilas.actores.Menu(opciones, y = 0)
# coding: utf-8
import pilasengine
pilas = pilasengine.iniciar()
class EscenaMenu(pilasengine.escenas.Escena):
def iniciar(self):
#Contenido de la escena principal: logo, menu...
self.set_logo()
self.menu_inicial()
def set_logo(self):
#importamos logo desde carpeta
#imagen = pilas.imagenes.cargar("data/logo.png")
logo = pilas.actores.Actor()
#logo.imagen = imagen
logo.y = 200
def menu_inicial(self):
#creamos opciones y instanciamos el menu principal
menu = [
("Ver ayuda", self.ayuda),
("Salir", self.salir_juego)
]
self.menu = pilas.actores.Menu()
def ayuda(self):
#lleva a la pantalla de apilas, yuda
pilas.escenas.vincular(ayuda.PantallaAyuda())
pilas.escenas.ayuda.PantallaAyuda()
def salir_juego(self):
#sale del juego
pilas.terminar()
pilas.escenas.vincular(EscenaMenu)
pilas.escenas.EscenaMenu()
pilas.ejecutar()
Este seria el código completo, estan comentadas las lineas de imagenes y fondo porque no tengo los archivos con los que lo probaste, si los compartes podria pasar una captura de la escena como la necesitas