Développement d’un Jeu Rétro en Python avec Pygame

Les jeux rétro ont une place spéciale dans le cœur des joueurs, et grâce à Pygame, vous pouvez créer facilement un jeu en 2D inspiré des classiques des années 80 et 90. Ce guide vous expliquera étape par étape comment développer un jeu rétro avec Python et Pygame, en couvrant les bases de l’affichage, du mouvement, des collisions et du score.


1. Introduction à Pygame

Pourquoi utiliser Pygame ?

Pygame est une bibliothèque Python qui facilite la création de jeux 2D en fournissant des outils pour gérer :

  • L’affichage des sprites et des images
  • La gestion du clavier et des événements utilisateur
  • Les collisions et la détection d’objets
  • Les sons et la musique
  • La gestion des animations

Installation de Pygame

Avant de commencer, assurez-vous d’installer Pygame si ce n’est pas encore fait :

bashCopierModifierpip install pygame

Une fois installé, vous pouvez commencer à coder !


2. Structure du Projet

Organisons notre projet avec la structure suivante :

bashCopierModifier/mon-jeu-retro
    /assets
        /images
        /sounds
    game.py
  • assets/images/ : Contiendra les sprites du joueur et des ennemis.
  • assets/sounds/ : Contiendra les sons et la musique.
  • game.py : Le fichier principal du jeu.

3. Configuration et Fenêtre de Jeu

Commençons par créer la fenêtre du jeu.

Code : Création de la fenêtre du jeu

pythonCopierModifierimport pygame

# Initialisation de Pygame
pygame.init()

# Définition des constantes
WIDTH, HEIGHT = 800, 600
FPS = 60  # Nombre d'images par seconde

# Couleurs
BLACK = (0, 0, 0)

# Création de la fenêtre du jeu
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Jeu Rétro avec Pygame")

# Boucle principale
running = True
clock = pygame.time.Clock()

while running:
    screen.fill(BLACK)  # Remplir l'écran avec du noir

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False  # Quitter le jeu

    pygame.display.flip()  # Rafraîchir l'affichage
    clock.tick(FPS)  # Limiter la vitesse du jeu

pygame.quit()

4. Ajout du Joueur et Contrôles

Nous allons maintenant ajouter un personnage que l’on pourra déplacer avec les touches fléchées.

Code : Création du joueur

pythonCopierModifier# Chargement du sprite du joueur
player_image = pygame.image.load("assets/images/player.png")
player_image = pygame.transform.scale(player_image, (50, 50))  # Redimensionner l'image

# Position initiale du joueur
player_x, player_y = WIDTH // 2, HEIGHT - 100
player_speed = 5  # Vitesse du joueur

while running:
    screen.fill(BLACK)

    # Gestion des événements
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # Gestion des touches
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT] and player_x > 0:
        player_x -= player_speed
    if keys[pygame.K_RIGHT] and player_x < WIDTH - 50:
        player_x += player_speed
    if keys[pygame.K_UP] and player_y > 0:
        player_y -= player_speed
    if keys[pygame.K_DOWN] and player_y < HEIGHT - 50:
        player_y += player_speed

    # Affichage du joueur
    screen.blit(player_image, (player_x, player_y))

    pygame.display.flip()
    clock.tick(FPS)

pygame.quit()

🔹 Explication :

  • On charge une image pour le joueur.
  • On détecte les touches du clavier pour déplacer le personnage.

5. Ajout des Ennemis

Les ennemis descendront du haut de l’écran et devront être évités.

Code : Ajout d’ennemis

pythonCopierModifierimport random

# Chargement du sprite de l’ennemi
enemy_image = pygame.image.load("assets/images/enemy.png")
enemy_image = pygame.transform.scale(enemy_image, (50, 50))

# Liste des ennemis
enemies = []
for _ in range(5):
enemy_x = random.randint(0, WIDTH - 50)
enemy_y = random.randint(-600, -50)
enemy_speed = random.randint(3, 6)
enemies.append([enemy_x, enemy_y, enemy_speed])

while running:
screen.fill(BLACK)

# Déplacement des ennemis
for enemy in enemies:
enemy[1] += enemy[2] # Descendre l'ennemi
if enemy[1] > HEIGHT:
enemy[1] = random.randint(-600, -50)
enemy[0] = random.randint(0, WIDTH - 50)

# Affichage des ennemis
for enemy in enemies:
screen.blit(enemy_image, (enemy[0], enemy[1]))

screen.blit(player_image, (player_x, player_y))

pygame.display.flip()
clock.tick(FPS)

pygame.quit()

🔹 Explication :

  • On crée une liste d’ennemis qui descendent.
  • Lorsqu’un ennemi sort de l’écran, il réapparaît en haut.

6. Détection de Collisions

Nous allons détecter si le joueur touche un ennemi.

Code : Détection des collisions

pythonCopierModifierdef check_collision(player_x, player_y, enemy_x, enemy_y):
    return (player_x < enemy_x + 50 and player_x + 50 > enemy_x and 
            player_y < enemy_y + 50 and player_y + 50 > enemy_y)

while running:
    screen.fill(BLACK)

    for enemy in enemies:
        enemy[1] += enemy[2]
        if enemy[1] > HEIGHT:
            enemy[1] = random.randint(-600, -50)
            enemy[0] = random.randint(0, WIDTH - 50)

        # Vérifier la collision avec le joueur
        if check_collision(player_x, player_y, enemy[0], enemy[1]):
            print("Game Over")
            running = False

    for enemy in enemies:
        screen.blit(enemy_image, (enemy[0], enemy[1]))

    screen.blit(player_image, (player_x, player_y))

    pygame.display.flip()
    clock.tick(FPS)

pygame.quit()

🔹 Explication :

  • On vérifie si le rectangle du joueur et celui d’un ennemi se superposent.
  • En cas de collision, le jeu s’arrête.

7. Ajout du Score

Ajoutons un score qui augmente avec le temps.

Code : Ajout du score

pythonCopierModifierscore = 0
font = pygame.font.Font(None, 36)  # Police du texte

while running:
    screen.fill(BLACK)

    score += 1  # Incrémenter le score
    score_text = font.render(f"Score: {score}", True, (255, 255, 255))
    screen.blit(score_text, (10, 10))

    pygame.display.flip()
    clock.tick(FPS)

Conclusion

En suivant ce guide, vous avez appris à créer un jeu rétro en 2D avec Pygame : ✅ Affichage et gestion des sprites
✅ Déplacement du joueur
✅ Ajout d’ennemis et détection de collision
✅ Système de score

Vous pouvez améliorer votre jeu en ajoutant :

  • Des niveaux et de la difficulté croissante 🎮
  • Un menu principal et un écran de Game Over 🕹️
  • Des animations et des sons 🎵
carle
carle