La nave de patrulla
Parte de la sección Sprites e imágenes del Journey de Pygame de Coddy. Lección 29 de 36.
Es hora de crear un juego completo: Star Patrol. Oleadas de naves enemigas descienden desde la parte superior. Tu nave patrulla la parte inferior de la ventana, se mueve a izquierda y derecha y dispara láseres hacia arriba. Destruye todas las oleadas para ganar; si dejas pasar a tres enemigos o chocas contra ellos, se acaba el juego.
Todos los objetos del juego serán sprites: el jugador, sus láseres, los enemigos y sus explosiones. El jugador va primero, como en el capítulo 4:
class Player(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = ship_image
self.rect = self.image.get_rect(midbottom=(320, 470))Carga ship_image una sola vez, después de crear la ventana. Su método update mueve el Rect con las flechas y lo mantiene dentro de la ventana. El bucle principal llama a player.update() y dibuja la nave.
Este capítulo amplía el mismo programa lección a lección, así que conserva los nombres que indican las tareas: las comprobaciones encuentran las partes del juego por esos nombres.
Desafío
Intermedio- Carga
assets/images/ship.pngenship_image. - Escribe
class Player(pygame.sprite.Sprite): imagenship_image, un Rect con el centro inferior en(320, 470)y unupdateque lo mueva 6 píxeles por fotograma con las teclas izquierda y derecha y lo mantenga dentro de la ventana. - Crea
player = Player(); en cada fotograma, llama aplayer.update()y dibujaplayer.imageenplayer.rectdespués del relleno.
Pruébalo tú mismo
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Star Patrol")
clock = pygame.time.Clock()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill((12, 14, 30))
pygame.display.flip()
clock.tick(60)
pygame.quit()
Todas las lecciones de Sprites e imágenes
1Cargar imágenes
Cargar una imagenColocarla con un rectánguloMover la imagenRepetir un fondo en mosaicoPíxeles transparentes4Sprites y grupos
La clase SpriteGruposEliminar con kill()Detectar colisiones con spritecollideGrupo contra grupo7Patrulla estelar
La nave de patrullaDisparar láseres2Girar, voltear y escalar
Girar alrededor del centroApuntar en la dirección del vueloEscalar una imagenGirar desde la imagen original5Colisiones precisas a nivel de píxel
Los rectángulos parecen injustosMáscarasSprites precisos a nivel de píxelHitboxes circulares3Clases para objetos del juego
Tu primera claseMétodosSelf es el objetoUna lista de objetosObjetos con imágenesUna subclase6Animación con hojas de sprites
Recortar una hoja de spritesUn contador de fotogramasAnimar con el tiempoUna explosión de una sola vezPractica por tu cuenta: Playground de Pygame