Ejemplo de disparos y actor que siguen al protagonista

Les dejo este ejemplo que he montado para otro post. Espero que les ayude! :wink:

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()
4 me gusta