Curso de videojuegos con Pygame

Control de la cadencia de proyectiles en Pygame

Capítulo 18: Control del tiempo entre disparos

En este capítulo vamos a ver cómo controlar el tiempo entre acontecimientos, de esta forma podremos controlar el tiempo que tarda nuestra nave entre disparo y disparo.

Lo primero que tienes que hacer es añadir una cadencia en milisegundos dentro de la clase Jugador.

self.cadencia = 750

Entre disparo y disparo, tendremos que calcular cuanto tiempo ha pasado desde el último disparo. Para ello, debemos utilizar el get_ticks() de Pygame.

self.ultimo_disparo = pygame.time.get_ticks()

Una vez tenemos el control de los disparos, es hora de hacer un sencillo condicional para obtener el tiempo del momento del disparo.

if teclas[pygame.K_SPACE]:
	ahora = pygame.time.get_ticks()
	if ahora - self.ultimo_disparo > self.cadencia:
		self.disparo()
		self.ultimo_disparo = ahora

Por si no lo entiendes muy bien, le estamos diciendo es que si han pasado los milisegundos especificados en la variable cadencia, que dispare.

Y por último, una vez realizado el disparo, que ponga el tiempo de último disparo en ahora.

Y así vuelve a empezar cada vez que pulsamos la tecla espacio.

En el vídeo podrás ver los resultados y entender mejor este código.


Comentarios

Si te quedan dudas sobre el temario, sobre Python, Pygame o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.

Programación Fácil YouTube

Suscríbete

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.