Ajouter des ennemis et gérer les collisions dans un jeu Shoot ’em Up

Introduction

Dans la suite de notre développement, nous allons ajouter des ennemis que le joueur doit combattre, gérer les collisions entre les projectiles et les ennemis, et mettre en place un système de score pour récompenser le joueur lorsqu’il détruit un ennemi.

1. Ajouter des ennemis dans le jeu

Les ennemis seront représentés par des sprites qui descendent depuis le haut de l’écran. Voici comment créer un ennemi basique.

class Ennemi(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((40, 30))
        self.image.fill((255, 0, 0))  # Ennemi rouge
        self.rect = self.image.get_rect()
        self.rect.x = random.randint(0, screen_width - self.rect.width)
        self.rect.y = random.randint(-100, -40)
        self.vitesse_y = random.randint(2, 6)

    def update(self):
        self.rect.y += self.vitesse_y
        if self.rect.top > screen_height:
            self.rect.x = random.randint(0, screen_width - self.rect.width)
            self.rect.y = random.randint(-100, -40)
            self.vitesse_y = random.randint(2, 6)

Chaque ennemi se déplace de haut en bas. S’il sort de l’écran, il est repositionné au-dessus pour continuer à apparaître.

2. Gérer les collisions entre les projectiles et les ennemis

Nous devons maintenant détecter quand un projectile touche un ennemi. Nous utilisons la méthode pygame.sprite.groupcollide() pour gérer cela.

# Détecter les collisions entre projectiles et ennemis
collisions = pygame.sprite.groupcollide(projectiles, ennemis, True, True)

for collision in collisions:
    score += 10  # Ajouter 10 points pour chaque ennemi détruit

Cette fonction supprime à la fois le projectile et l'ennemi lorsqu’une collision est détectée. Nous ajoutons également un système de score pour récompenser le joueur.

3. Boucle de jeu avec ennemis

Mettez à jour la boucle de jeu pour ajouter les ennemis et gérer les collisions.

# Groupes de sprites
ennemis = pygame.sprite.Group()

# Créer des ennemis
for i in range(8):
    ennemi = Ennemi()
    all_sprites.add(ennemi)
    ennemis.add(ennemi)

# Boucle de jeu
running = True
while running:
    clock.tick(60)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                joueur.tirer()

    # Mettre à jour les sprites
    all_sprites.update()

    # Détecter les collisions
    collisions = pygame.sprite.groupcollide(projectiles, ennemis, True, True)

    for collision in collisions:
        score += 10

    # Afficher les éléments
    screen.fill((0, 0, 0))
    all_sprites.draw(screen)

    pygame.display.flip()

pygame.quit()

Conclusion

Dans cet article, nous avons ajouté des ennemis au jeu, géré les collisions entre les projectiles et les ennemis, et mis en place un système de score pour rendre le jeu plus interactif. Dans le prochain article, nous allons améliorer les graphismes, ajouter des boss et des effets spéciaux.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *