Agregar limite de balas a la torreta[SOLUCIONADO]

Hola quisiera saber si hay alguna posibilidad de agregarle vida a mi personaje?,limite de balas?(cargadores)
Gracias por su tiempo

Compañero, busque informacion y no la encontre. Suerte

Gracias Matsimus no hay problema,espero que alguien pueda ayudarme:blush:

##Ya pude agregarle vida a mi personaje,gracias de todos modos
##Necesitaria ayuda para agregarle limite a la municion de la torreta

Buenas, @Facundo_Barafani !

Voy a investigar un poco el actor “torreta”… a ver si puedo darte una solución en breve.

De todas formas, me interesaria saber si has usado el actor “torreta” de Pilas o te has creado un actor personalizado.

Un abrazo.

# -*- encoding: utf-8 -*- 
import pilasengine
pilas=pilasengine.iniciar()

class mi_torreta(pilasengine.actores.Actor):
	def iniciar(self):
		self.imagen = ('data/torreta.png')
		self.aprender('rotarconmouse')
		
		self.cargadores = 3
		self.balas_disponibles = 10
		
		self.aprender('disparar', control= None, municion ='mi_municion', angulo_salida_disparo = 90)

		pilas.eventos.click_de_mouse.conectar(self.disparo_torreta)			



	def disparo_torreta(self, evento):
		if evento.boton == 1:
			if self.balas_disponibles > 0:
				self.disparar()
				self.balas_disponibles -=1
				print(self.balas_disponibles)
			else:
				print('No quedan balas!')
		
		elif evento.boton == 2:
			if self.balas_disponibles < 1:
				if self.cargadores > 0:
					self.balas_disponibles += 10
					self.cargadores -=1
					print('Cargador cambiado, dispones de ' ,self.balas_disponibles,' balas')
				
				else:
					print('No quedan cargadores!')
			else:
				print(u'Aún quedan balas en la recamara')					
		
class mi_municion(pilasengine.actores.Actor):
	def iniciar(self):
		self.imagen =('data/disparo_laser.png')			
			
pilas.actores.vincular(mi_torreta)
pilas.actores.vincular(mi_municion)

torreta = pilas.actores.mi_torreta()


pilas.ejecutar()

Aunque no me gusta “hacer los deberes” de nadie, me pareció un tema interesante :smile:

A ver si este ejemplo te sirve !

Se dispara con el boton izquierdo del mouse y se recarga con el boton derecho.

Piensa que aunque el proyectil salga de la pantalla y no se vea, sigue existiendo y ocupando memoria. Deberias implementar un método para eliminarlo cuando salga de pantalla.

Suerte en tu proyecto.

Muchisimas gracias por tu colaboracion,ahora implemento el codigo a mi proyecto y si despues queres ver como va en progreso lo paso por aca,en el tema de las balas que salen y que gastan memoria estamos trabajando en eso,Muchisimas gracias!

Buenas, @Facundo_Barafani !

Yo soy del parecer que el conocimiento debe compartirse, y si subes tu código seguro que servirá de ejemplo a otras personas… :slight_smile:

Lo más fácil seria hacerlo en la def actualizar(self): de la class “mi_municion”,

por ejemplo…

def actualizar(self):
      if self.x > 300 or self.x < -300:
            self.eliminar()

de esta manera cuando el disparo llega a la coordenada x 300 o x -300 el proyectil es eliminado.

Lo mismo habria que hacer para las coordenadas Y

Hay que entender 2 cosas de Pilas Engine:

Lo primero (que seguro ya habras visto) que el centro de la pantalla es la coordenada X= 0, Y= 0.

Lo segundo, que el metodo def actualizar() es un metodo muy especial, ya que se actualiza 60 veces por segundo. Por eso es muy útil para hacer comprobaciones y actualizar posiciones. Pero no debe sobrecargarse, ya que podriamos estar obligando a nuestra PC a hacer millones de cálculos por segundo y bajaria el rendimiento.

Puedes hacer la prueba de escribir un ciclo while simple en una def actualizar(): y entenderás de qué hablo: Se va a bloquear Pilas, ya que estará intentando iniciar 60 ciclos while por segundo. :joy:

Cualquier otra duda aquí estamos para intentar ayudar.

Un abrazo y suerte en tu proyecto.

Muchisimas gracias por tu ayuda,apenas tenga parte de mi proyecto mas progresado lo subo!