PyCharm

Pycharm es un fantástico IDE para Python.
Cuenta con versión gratuita y versión de pago. Tú eliges.
Este es el IDE que utilizo en el curso
Ir a la página de descargaPor fin lo que muchas y muchos estábais esperando, los disparos.
He tardado en llegar aquí, porque para utilizar los disparos, primero era importante que supieras trabajar con colisiones.
Para poder disparar, lo primero es añadir una clase para dichos disparos.
Aquí tienes la imagen para los disparos: disparo.png
class Disparos(pygame.sprite.Sprite):
def __init__(self, x, y):
super().__init__()
self.image = pygame.transform.scale(pygame.image.load("principal/disparo.png").convert(),(10,20))
self.image.set_colorkey(NEGRO)
Por el momento, con esto heredamos de la clase Sprite
de Pygame, cargamos y redimensionamos la imagen del disparo a 10
px de ancho y 20
px de alto.
Una vez escrito esto, tenemos que obtener la posición del rectángulo para indicar las posiciones 'x' e 'y' dónde se van a generar los disparos.
self.rect = self.image.get_rect()
self.rect.bottom = y
self.rect.centerx = x
Aquí tenemos que indicar unos valores dinámicos para las posiciones de 'x' e 'y', por eso lo estoy pasando como argumento en el __init__
, ya que en este caso no me sirve escribir un número y ya. Tiene que ir cambiando de modo que vaya en consonancia con tu personaje y salgan de su posición los disparos.
La parte baja del rectángulo (bottom
) del disparo va a tener asignada la 'y'.
y le decimos que centre la 'x' (centerx
) asignando el valor de 'x'.
También deberás crear un grupo de sprites para las balas:
balas = pygame.sprite.Group()
Siempre que añades un grupo de sprites, también un balas.draw(pantalla)
y un balas.draw(pantalla)
.
balas.update()
balas.draw(pantalla)
Es el momento de crear en la clase del personaje principal (Jugador
) un método para el disparo:
def disparo(self):
bala = Disparos(self.rect.centerx, self.rect.top)
balas.add(bala)
Cada vez que se ejecute este método, va a instanciar una bala o disparo en las posiciones 'x' e 'y' donde se encuentre el personaje, y estas coordenadas al ser dinámicas, van cambiando con el movimiento del personaje.
Le damos una velocidad en la dirección determinada. Si yo quiero que vaya hacia arriba, le pondré un número negativo, si quiero que vaya hacia abajo, un número positivo.
Y finalmente, le decimos, que cuando el bottom
del rectángulo sea inferior a cero, es decir, que las balas salgan de la parte superior, que las elimine para liberar recursos de dichas balas.
def update(self):
self.rect.y -= 25
if self.rect.bottom < 0:
self.kill()
Para terminar, si quieres que la nave vaya adquiriendo con los niveles de experiencia o con algún tipo de bonus nuevas habilidades, puedes hacer que se vaya incrementando el número de cañones de disparo de la nave, añadiendo más métodos de disparo.
def disparo2(self):
bala = Disparos(self.rect.centerx + 23, self.rect.top)
balas.add(bala)
def disparo3(self):
bala = Disparos(self.rect.centerx - 23, self.rect.top)
balas.add(bala)
Debes configurar la tecla que quieras para el disparo. Yo he elegido el espacio.
if teclas[pygame.K_SPACE]:
jugador.disparo()
jugador.disparo2()
jugador.disparo3()
En caso de que quieras un solo cañón de disparo, quita las líneas de disparo2
y disparo3
.
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.
Si te quedan dudas sobre el temario, sobre Python, 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.