Créer les bases d’un jeu Shoot ’em Up avec Pygame

Introduction

Les shoot 'em up sont des jeux d’action rapides où le joueur contrôle un vaisseau ou un personnage qui doit tirer sur des vagues d'ennemis. Dans ce premier article, nous allons poser les bases de notre shoot 'em up en créant une fenêtre de jeu avec Pygame, un vaisseau contrôlé par le joueur, et la mécanique de tir.

1. Initialisation de Pygame et création de la fenêtre

Pour commencer, nous devons initialiser Pygame et créer une fenêtre dans laquelle notre jeu se déroulera.

import pygame

# Initialiser Pygame
pygame.init()

# Définir les dimensions de la fenêtre
screen_width, screen_height = 800, 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Shoot 'em Up")

# Définir la vitesse de rafraîchissement
clock = pygame.time.Clock()

Cette étape crée une fenêtre de 800x600 pixels où le jeu se déroulera, avec un titre approprié pour votre projet. L'objet clock nous permettra de limiter le nombre de FPS (frames par seconde).

2. Création du vaisseau du joueur

Le joueur doit pouvoir contrôler un vaisseau. Nous allons définir un sprite représentant le vaisseau et lui permettre de se déplacer en utilisant les touches du clavier.

class Joueur(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.Surface((50, 40))
        self.image.fill((0, 255, 0))  # Vaisseau vert
        self.rect = self.image.get_rect()
        self.rect.center = (screen_width // 2, screen_height - 50)
        self.vitesse_x = 0

    def update(self):
        self.vitesse_x = 0
        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT]:
            self.vitesse_x = -5
        if keys[pygame.K_RIGHT]:
            self.vitesse_x = 5
        self.rect.x += self.vitesse_x

        # Empêcher le vaisseau de sortir de l'écran
        if self.rect.right > screen_width:
            self.rect.right = screen_width
        if self.rect.left < 0:
            self.rect.left = 0

Le vaisseau est représenté par un rectangle vert que le joueur peut déplacer à gauche et à droite. La méthode update() gère les touches du clavier pour ajuster la position du vaisseau.

3. Ajouter la capacité de tirer des projectiles

Un shoot 'em up n’est pas complet sans la possibilité de tirer. Nous allons créer un sprite pour les projectiles et permettre au joueur de tirer en appuyant sur la barre d’espace.

class Projectile(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super().__init__()
        self.image = pygame.Surface((5, 10))
        self.image.fill((255, 0, 0))  # Projectile rouge
        self.rect = self.image.get_rect()
        self.rect.center = (x, y)

    def update(self):
        self.rect.y -= 10
        if self.rect.bottom < 0:
            self.kill()  # Supprime le projectile quand il sort de l'écran

Ajoutons maintenant la gestion du tir dans le vaisseau :

class Joueur(pygame.sprite.Sprite):
    # Ajout d'une méthode pour tirer
    def tirer(self):
        projectile = Projectile(self.rect.centerx, self.rect.top)
        all_sprites.add(projectile)
        projectiles.add(projectile)

Le vaisseau peut maintenant tirer des projectiles qui montent vers le haut. Pour tirer, nous utilisons self.rect.top pour définir la position initiale du projectile.

4. Boucle de jeu principale

Enfin, mettons tout cela ensemble dans une boucle de jeu pour que le joueur puisse se déplacer et tirer.

# Groupes de sprites
all_sprites = pygame.sprite.Group()
projectiles = pygame.sprite.Group()

# Créer un joueur
joueur = Joueur()
all_sprites.add(joueur)

running = True
while running:
    # Limiter à 60 FPS
    clock.tick(60)

    # Gestion des événements
    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()

    # Afficher à l'écran
    screen.fill((0, 0, 0))  # Fond noir
    all_sprites.draw(screen)

    pygame.display.flip()

pygame.quit()

Dans cette boucle de jeu, nous vérifions les événements du clavier et utilisons joueur.tirer() pour tirer des projectiles. Tous les sprites sont mis à jour et affichés à l’écran.

Conclusion

Dans cet article, nous avons créé les bases d'un shoot 'em up : une fenêtre de jeu, un vaisseau contrôlé par le joueur, et la capacité de tirer des projectiles. Dans le prochain article, nous ajouterons des ennemis, gèrerons les collisions, et mettrons en place un système de score.

Laisser un commentaire

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