Les dejo este ejemplo que he montado para otro post. Espero que les ayude!
import pilasengine
pilas = pilasengine.iniciar(titulo='disparos')
mi_fondo=pilas.fondos.Tarde()
class Municion_Mono(pilasengine.actores.Actor):
def iniciar(self):
self.imagen='aceituna.png'
self.x = mono.x
self.y = mono.y
self.aprender('puedeExplotar')
pilas.tareas.agregar(3,self.destruir)
def actualizar(self):
self.x = [alien.x],2
self.y = [alien.y],2
def destruir(self):
self.eliminar()
pilas.actores.vincular(Municion_Mono)
class Municion_Alien(pilasengine.actores.Actor):
def iniciar(self):
self.x = alien.x
self.y = alien.y
self.imagen ='data/disparos/bola_amarilla.png'
self.aprender('puedeExplotar')
pilas.tareas.agregar(4, self.destruir_bala_alien)
def actualizar(self):
pass
def destruir_bala_alien(self):
self.eliminar()
pilas.actores.vincular(Municion_Alien)
def dispara_mono():
bala_mono = pilas.actores.Municion_Mono()
def dispara_alien(evento):
if alien.esta_vivo:
bala_alien = pilas.actores.Municion_Alien()
bala_alien.x = [evento.x],4
bala_alien.y = [evento.y],4
def cuando_matan_alien(soldado, bala):
bala.eliminar()
soldado.eliminar()
soldado.esta_vivo = False
tarea_disparar.terminar()
tarea_seguir.terminar()
def seguir_alien():
mono.x = [alien.x],5
mono.y = [alien.y],5
def anular(bala1,bala2):
bala1.eliminar()
bala2.eliminar()
def matar_mono():
mono.vida -= 1
if mono.vida <= 0:
actores = pilas.actores.listar_actores()
# Elimina todos los actores excepto el soldado
for actor in actores:
if actor not in [alien,mi_fondo]:
actor.eliminar()
alien.decir('Yupiiii')
pilas.avisar('Ganaste')
tarea_disparar.terminar()
tarea_seguir.terminar()
else:
pilas.avisar('Vidas: '+str(mono.vida))
alien=pilas.actores.Actor()
alien.imagen = 'alien.png'
alien.x = 150
alien.aprender('moverseConElTeclado')
alien.aprender('seMantieneEnPantalla')
alien.esta_vivo = True
#alien.aprender('dispararconclick', municion=Municion_Alien)
pilas.eventos.click_de_mouse.conectar(dispara_alien)
mono=pilas.actores.Mono()
mono.x = 0
mono.escala = 0.6
mono.vida = 10
tarea_disparar = pilas.tareas.siempre(1, dispara_mono)
tarea_seguir = pilas.tareas.siempre(1, seguir_alien)
pilas.colisiones.agregar('Actor', 'Municion_Mono', cuando_matan_alien)
pilas.colisiones.agregar('Municion_Alien', 'Municion_Mono', anular)
pilas.colisiones.agregar('Municion_Alien', 'Mono', matar_mono)
pilas.avisar("Flechas para mover y click para disparar")
pilas.ejecutar()