Problema con un contador de puntaje

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:

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