Problemas con escenas

Este es mi juego: (ya lo había publicado antes en una consulta)

(Falta modificar varias cosas todavia)

El problema es que cuando aprieto el botón de volver, tanto el de la escena historia como el que aparece cuando uno muere, solo aparece una pantalla gris y no pasa nada, pero no me tira ningún error.

ayudaa

Buenas, @Nacho !

He testado tu juego, ahora sí que he podido hacerlo correctamente al tener todos los archivos :smile:

Bueno, lo primero y a lo que se referia tu duda:

1.- debes poner como escena inicial la escena menu:

pilas.escenas.vincular(menu)
pilas.escenas.vincular(escenajuego)
pilas.escenas.vincular(Historiaa)
pilas.escenas.vincular(nivel2)
                   
pilas.escenas.menu() #<------------------- escena inicial

pilas.ejecutar()

2.- en la escena menu seria aconsejable que tuviera una def iniciar:

class menu(pilasengine.escenas.Escena):
	
	def iniciar(self):	
		MenuPrincipal = pilas.fondos.Fondo(imagen='menujuego.png')   
		mennu = pilas.actores.Menu([('Iniciar juego', iniciar_juego),('Historia', historia),('Salir', salir_del_juego)])
		mennu.color = "amarillo"
		mennu.escala =1.3

3.- La música debe acabarse al elegir salir del juego, por que si no sigue sonando después de cerrar el programa:

def salir_del_juego():
   cancion_de_fondo.detener()
   pilas.terminar()

Con esos 3 cambios a mi me ha funcionado perfectamente :smile:

Un saludo! :wink:

1 Like

Gracias, ahora funciona

Pero ahora tengo un problema en algo nuevo que agregué.

Hice que, en lugar de salir una imagen cuando uno pierde, te lleve a otra escena (pilas.escena.perdiste) la cual tiene un botón (btn = pilas.actores.Botón) invisible (btn.transparencia = 1000) ya que en la imagen de fondo tiene un texto que dice Salir. Este botón debería tener la función de llevarte a la escena menú.

El problema es que, cuando uno pierde, en lugar de llevarte a la escena “perdiste”, te lleva directamente a la escena “menu” como si el botón se ejecutara solo, antes de aparecer la escena. Probablemente sea porque no uso el código adecuado para el actor Boton, pero ya probé con varios códigos y no se cual es el que debo usar.

Esta es la clase que sale al perder:

class perder(pilasengine.escenas.Escena):
>          def iniciar(self):
>              fondoo = pilas.fondos.Fondo()
>              fondoo.imagen = pilas.imagenes.cargar("perdiste.png")
>              btn = pilas.actores.Boton()
>              btn.y = -175
>              btn.transparencia = 1000
>              btn.escala = 2
>              btn.funcion = pilas.escenas.menu()

Y esta es la función que hace que al perder te lleve a la escena “perder”:

    > def perder_vida(planeta, enemigo): 
    >     enemigo.eliminar()
    >     if (vida.valor != 1):
    >         vida.reducir(1)
    >     else:
    >         pilas.escenas.perder()

La forma correcta de programar el boton es esta:

class perder(pilasengine.escenas.Escena):
>          def iniciar(self):
>              fondoo = pilas.fondos.Fondo()
>              fondoo.imagen = pilas.imagenes.cargar("perdiste.png")
>              self.btn = pilas.actores.Boton()
>              self.btn.y = -175
>              self.btn.transparencia = 100# <------TRANSPARENCIA 100
>              self.btn.escala = 2
>              self.btn.conectar(self.volver_a_menu)
           
             def volver_a_menu(self):
                 pilas.escenas.menu()

NOTA: No copies y pegues este código, ya que te daría error de identación. Mejor escrííblo directamente en tu editor.

Un saludo :wink:

Me sale un error que dice
ERROR AttributeError("‘Boton’ object has no attribute ‘conectar’",)

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

Si lo tiene. Mira este link al manual.

Creo que ya sé cual es el error…[quote=“jordinur, post:4, topic:1302”]
self.btn = pilas.actores.Boton()
[/quote]

copié tu código sin fijarme en que has declarado el botón como “actor” en vez de “interfaz”.

lo correcto es:

self.btn = pilas.interfaz.Boton()

Un saludo :wink:

Lo hice, pero ahora el problema cambió a:

ERROR AttributeError("‘perder’ object has no attribute ‘volveralmenu’",)

Este es el código de “volveralmenu”:

def volveralmenu():
      pilas.escenas.menu()

Y está el principio de todo el código del juego, luego de pilas.iniciar()

Oh, si está al principio del código, es una función. Deberías conectarla sin poner “self.” adelante.

Por ejemplo:

boton = pilas.interfaz.Boton("Regresar")


def volveralmenu():
      pilas.escenas.menu()

boton.conectar(volveralmenu)

Es cierto, me había olvidado de ese detalle.
Ahora el error no lo entiendo, me sale la pantalla azul pero el texto se ve a la mitad y no me deja saber cual es el error.

Les dejo el juego, este es el modo de dos jugadores (luego lo meteré en una clase del original y unifico ambos códigos).

Creo que el error es en la clase “perder” pero revisé varias veces y no lo encuentro.

Otro error que tengo es en la colisión entre la nave verde y los enemigos, no me salta ningún error pero la colisión no funciona.