Menu
CoddyTech

Le vaisseau de patrouille

Fait partie de la section Sprites et images du Journey Pygame de Coddy. Leçon 29 sur 36.

Il est temps de créer un jeu complet : Star Patrol. Des vagues de vaisseaux ennemis descendent depuis le haut. Votre vaisseau patrouille en bas de la fenêtre, se déplace à gauche et à droite et tire des lasers vers le haut. Détruisez toutes les vagues pour gagner ; laissez passer trois ennemis ou entrez en collision avec eux et la partie est terminée.

Chaque objet du jeu sera un sprite : le joueur, ses lasers, les ennemis et leurs explosions. Le joueur vient en premier, comme au chapitre 4 :

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = ship_image
        self.rect = self.image.get_rect(midbottom=(320, 470))

Chargez ship_image une seule fois, après la fenêtre. Sa méthode update déplace le Rect avec les flèches et le maintient à l'intérieur de la fenêtre. La boucle principale appelle player.update() et dessine le vaisseau.

Ce chapitre développe le même programme étape par étape ; conservez donc les noms indiqués dans les tâches : les vérifications repèrent les éléments du jeu grâce à eux.

challenge icon

Défi

Moyen
  1. Chargez assets/images/ship.png dans ship_image.
  2. Écrivez class Player(pygame.sprite.Sprite) : l’image ship_image, un Rect dont le milieu du bord inférieur se trouve à (320, 470), et une méthode update qui le déplace de 6 pixels par image avec les touches gauche et droite, et le maintient dans les limites de la fenêtre.
  3. Créez player = Player() ; à chaque image, appelez player.update() et affichez player.image à player.rect après le remplissage.

Essayez vous-même

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()

Toutes les leçons de Sprites et images

Entraînez-vous par vous-même : Playground Pygame