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”""