Hola necesito ayuda con un juego para la facultad

tengo un problema con este codigo fuente, me tira error linea 51 e intenté probar todas las combinaciones y no puedo hacer que funcione, este es el codigo, no puedo ver el problema del modulo:
import pilas

pilas.iniciar()

class EscenaDeMenu(pilas.escena.Base):

def __init__(self):
    pilas.escena.Base.__init__(self)

def iniciar(self):
    pilas.fondos.Fondo('fondo1.jpg')

    opciones = [
        ('Comenzar a jugar', self.comenzar),
        ('Salir', self.salir)]

    self.menu = pilas.actores.Menu(opciones)

def comenzar(self):
    pilas.cambiar_escena(EscenaDeJuego())

def salir(self):
    import sys
    sys.exit(0)

class EscenaDeJuego(pilas.escena.Base):

def __init__(self):
    pilas.escena.Base.__init__(self)

def iniciar(self):
    self.rosas=pilas.actores.Actor('rosas.jpg')
    self.rosas.aprender(pilas.habilidades.Arrastrable)
    self.rosas.radio_de_colision=120
    pilas.fondos.Pasto()
    self.ro=pilas.actores.Actor('rosass.jpg')
    self.m=pilas.actores.Mono()
    self.m.x=-240
    self.m.y=-135
    self.ro.x=-230
    self.ro.y=160
    self.ch=pilas.actores.Actor('chosas.jpg')
    self.ch.x=230
    self.ch.y=160
    def contacto(self.rosas, self.ro,):
        self.ro.eliminar()
        self.m.sonreir()
        pilas.avisar('Felicitaciones, el se llama Juan Manuel de Rosas')
    pilas.escena_actual().colisiones.agregar(self.rosas, self.ro, self.m, self.contacto)
    def colision(self.rosas, self.ch):
        self.ch.eliminar()
        self.m.gritar()
        pilas.avisar('TE EQUIVOCASTE...')
    pilas.escena_actual().colisiones.agregar(self.rosas, self.ch, self.colision)
    pilas.avisar("Pulsa la tecla 'a' para regresar al menu...")
    pilas.eventos.pulsa_tecla.conectar(self.cuando_pulsa_tecla)
    
    
def cuando_pulsa_tecla(self, evento):
    if evento.texto == u'a':
        pilas.cambiar_escena(EscenaDeMenu())

pilas.cambiar_escena(EscenaDeMenu())
pilas.ejecutar()

@fate1141

Podrías compartirnos el error que te arroja la consola al ejecutar el código de tu videojuego?

Saludos.

no me deja subir fotos porque soy principiante, mi problema es cuando quiero que un “def” haga algo con “pilas.escena_actual().colisiones.agregar()” no hace nada y tira error de sintaxis,


class EscenaDeJuego(pilas.escena.Base):

    def __init__(self):
        pilas.escena.Base.__init__(self)

    def iniciar(self):
        rosas=pilas.actores.Actor('rosas.jpg')
        rosas.aprender(pilas.habilidades.Arrastrable)
        rosas.radio_de_colision=120
        pilas.fondos.Pasto()
        ro=pilas.actores.Actor('rosass.jpg')
        m=pilas.actores.Mono()
        m.x=-240
        m.y=-135
        ro.x=-230
        ro.y=160
        ch=pilas.actores.Actor('chosas.jpg')
        ch.x=230
        ch.y=160
        pilas.avisar("Pulsa la tecla 'a' para regresar al menu...")
        pilas.eventos.pulsa_tecla.conectar(self.cuando_pulsa_tecla)
    
    def cuando_pulsa_tecla(self, evento):
        if evento.texto == u'a':
            pilas.cambiar_escena(EscenaDeMenu())

hasta aca anda perfecto, entro en la escena del juego veo los actores y todo lo que cree, mi problema está cuando creo un “def” para una colision con accion, algo asi hice:


ch=pilas.actores.Actor('chosas.jpg')
        ch.x=230
        ch.y=160
        pilas.avisar("Pulsa la tecla 'a' para regresar al menu...")
        pilas.eventos.pulsa_tecla.conectar(self.cuando_pulsa_tecla)

        def colision(rosas, ro):
           m.sonreir()
       pilas.escena_actual().colisiones.agregar(rosas, ro, colision)
 
    def cuando_pulsa_tecla(self, evento):
        if evento.texto == u'a':
            pilas.cambiar_escena(EscenaDeMenu())

“Apenas coloco este modulo def no hace nada y tira error de sintaxis”

Hola Alguna tiene idea de este error, ya que justo tengo el mismo problema,
es cuando dentro de una escena se usa
pilas.escena_actual().colisiones.agregar(self.actor1, self.actor2,self.cuando_colisiona)
def cuando_colisiona(actor1, actor2):
actor1.decir(“genial”)

ERROR TypeError(‘cuando_colisiona() takes exactly 2 arguments (1 given)’,)
-390
TypeError(‘cuando_colisiona() takes exactly 2 arguments (1 given)’,)
Traceback (most recent call last):
File “C:\PILAS-~1\pilasengine\widget.py”, line 102, in timerEvent
self.realizar_actualizacion_logica()
File “C:\PILAS-~1\pilasengine\widget.py”, line 83, in realizar_actualizacion_logica
self.pilas.realizar_actualizacion_logica()
File "C:\PILAS-~1\pilasengine_init
.py", line 392, in realizar_actualizacion_logica
self.escenas.realizar_actualizacion_logica()
File "C:\PILAS-~1\pilasengine\escenas_init
.py", line 58, in realizar_actualizacion_logica
escena.colisiones.actualizar()
File “C:\PILAS-~1\pilasengine\colisiones_init_.py”, line 62, in actualizar
self.ejecutar_colision_programada_si_existe(actor_1, actor_2)
File "C:\PILAS-~1\pilasengine\colisiones_init
.py", line 73, in ejecutar_colision_programada_si_existe
self.invocar_funcion(funcion_a_llamar, a, b)
File "C:\PILAS-~1\pilasengine\colisiones_init
.py", line 88, in invocar_funcion
funcion()
TypeError: cuando_colisiona() takes exactly 2 arguments (1 given)

El fallo que obtiene el ejemplo anterior creo que es porque no respeta los espacios, te pongo un ejemplo aunque no sé si será tu caso, todabia no empecé con pilas…

    def saludo():
            print("este mensaje se mostrará")

El espacio antes de print y la linea vacía despues de ella cierra saludo()


    def saludo2():
    print("esto provocará error")

Aun no se cerró saludo2 porque no tiene una linea vacía debajo

texto preformateado precedido por 4 espacios

“”“Ahora sí se cerró, esto lo puse por el ejemplo que puso la otra persona en la que parece que los espacios son el problema”""