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 🎵

















