hola hugo en primer lugar lo quiero felicitar por la gran idea que tubo al crear pilas engine . segundo tengo un problema que no se como enfrentar tengo que aumentar un contador a medida que el usuario va respondiendo preguntas yo encerre toda la escena de juego en un class la cual se vuelve a llamar cuando uno responde mal o bien o se le termina el tiempo generando otra pregunta y asi
pero si uso el actor puntaje se vuelve a cero xq esta adentro del class o si lo dejo afuera no encuentro la forma de que pueda sacar este puntaje afuera no se si se me entiende . bueno espero que se entienda desde ya gracias
Hola @frenchi, una forma de compartir datos entre escenas es usar una variable global (aunque hay otras formas también).
Mirá este ejemplo, tengo una variable global llamada cantidad_puntos
y leo su valor cada vez que armo un contador de puntajes:
# -*- encoding: utf-8 -*-
import pilasengine
cantidad_puntos = 0
pilas = pilasengine.iniciar()
class EscenaNubes(pilasengine.escenas.Escena):
def iniciar(self):
global cantidad_puntos #accedemos a la variable global
self.puntaje = pilas.actores.Puntaje(0, 200)
self.puntaje.definir(cantidad_puntos)
pilas.fondos.Nubes()
self.boton = pilas.interfaz.Boton("aumentar puntaje")
self.boton.conectar(self.aumentar_puntaje)
self.boton_cambiar_escena = pilas.interfaz.Boton("cambiar escena")
self.boton_cambiar_escena.y = -100
self.boton_cambiar_escena.conectar(self.ir_a_escena_pasto)
def aumentar_puntaje(self):
global cantidad_puntos #accedemos a la variable global
self.puntaje.aumentar(1)
cantidad_puntos += 1 #es importante tambien aumentar la variable
def ir_a_escena_pasto(self):
escena = EscenaPasto(pilas)
pilas.definir_escena(escena)
class EscenaPasto(pilasengine.escenas.Escena):
def iniciar(self):
global cantidad_puntos #accedemos a la variable global
self.puntaje = pilas.actores.Puntaje(0, 200)
self.puntaje.definir(cantidad_puntos)
pilas.fondos.Cesped()
self.boton_cambiar_escena = pilas.interfaz.Boton("ir a escena nubes")
self.boton_cambiar_escena.y = -100
self.boton_cambiar_escena.conectar(self.ir_a_escena_espacio)
pilas.actores.Caja() * 3
def ir_a_escena_espacio(self):
escena = EscenaNubes(pilas)
pilas.definir_escena(escena)
escena = EscenaNubes(pilas)
pilas.definir_escena(escena)
pilas.ejecutar()
muchas gracias me sirvio mucho otra consulta yo puedo a un actor puntaje establecerlo ya con un puntaje de 3 y aciendo esto variable.aumentar(-1) ir sanado uno a los puntajes ?
¡Más sencillo! Puedes escribir variable.reducir(1)
y consigues lo mismo ![:slight_smile: :slight_smile:](http://foro.examplelab.com.ar/images/emoji/twitter/slight_smile.png?v=9)
Hola…a mi me esta costando demasiado el tema de puntajes para vidas y no quiero reprobar por esto,ayuda por favor.Yo tengo una funcion adentro de un class que se define que pasa cuando colisionan 2actores, ahi le agregue puntaje .aumentar(-1),lo que nose es adonde definir el actor puntaje,si hacer otra funcion,ya lo puse afuera de mi funcion como una variable,tambien afuera del class y le agregue global puntaje,lo hice con pilas.Normal,y nada,no anda…
Ya vi el video de arriba, el del mono y de los asteroides, y un compañero me dijo que lo haga a fuera del class,que a el le dio,pero no me anda.
ME ESTOY VOLVIENDO LOCA,Y CADA VEZ MENOS TIEMPO PARA ENTREGAR EL JUEGO EN LA FACU