Tutoriel : Créer un petit jeu avec Pygame

Dans ce tutoriel, nous allons créer un petit jeu avec Pygame, une bibliothèque Python dédiée à la création de jeux vidéo. Le jeu sera simple : un joueur contrôle un carré qui doit éviter des obstacles qui tombent du haut de l'écran.

Prérequis

Avant de commencer, assurez-vous d'avoir installé Python et Pygame sur votre machine.

Installation de Python

Téléchargez et installez Python depuis le site officiel : https://www.python.org/.

Installation de Pygame

Pour installer Pygame, ouvrez un terminal ou une invite de commande et exécutez la commande suivante :

pip install pygame

Étape 1 : Créer un fichier Python

Créez un fichier nommé jeu.py dans votre éditeur de texte ou IDE préféré.

Étape 2 : Initialiser Pygame

Ajoutez le code suivant pour initialiser Pygame et créer une fenêtre de jeu :

import pygame
import random

# Initialisation de Pygame
pygame.init()

# Dimensions de la fenêtre
LARGEUR = 800
HAUTEUR = 600

# Couleurs
BLANC = (255, 255, 255)
NOIR = (0, 0, 0)
ROUGE = (255, 0, 0)
VERT = (0, 255, 0)

# Création de la fenêtre
fenetre = pygame.display.set_mode((LARGEUR, HAUTEUR))
pygame.display.set_caption("Évitez les obstacles !")

# Horloge pour contrôler la vitesse du jeu
horloge = pygame.time.Clock()

Étape 3 : Ajouter le joueur

Ajoutez un carré contrôlé par le joueur :

# Classe Joueur
class Joueur:
    def __init__(self):
        self.x = LARGEUR // 2
        self.y = HAUTEUR - 50
        self.taille = 50
        self.vitesse = 5

    def dessiner(self):
        pygame.draw.rect(fenetre, VERT, (self.x, self.y, self.taille, self.taille))

    def deplacer(self, touches):
        if touches[pygame.K_LEFT] and self.x > 0:
            self.x -= self.vitesse
        if touches[pygame.K_RIGHT] and self.x < LARGEUR - self.taille:
            self.x += self.vitesse

Étape 4 : Ajouter des obstacles

Ajoutez des obstacles qui tombent du haut de l'écran :

# Classe Obstacle
class Obstacle:
    def __init__(self):
        self.x = random.randint(0, LARGEUR - 50)
        self.y = -50
        self.taille = 50
        self.vitesse = 5

    def dessiner(self):
        pygame.draw.rect(fenetre, ROUGE, (self.x, self.y, self.taille, self.taille))

    def deplacer(self):
        self.y += self.vitesse

Étape 5 : Boucle principale du jeu

Ajoutez la boucle principale pour gérer les événements, mettre à jour les positions et dessiner les éléments :

# Fonction principale
def jeu():
    joueur = Joueur()
    obstacles = [Obstacle()]
    score = 0
    jeu_en_cours = True

    while jeu_en_cours:
        fenetre.fill(NOIR)

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

        # Déplacement du joueur
        touches = pygame.key.get_pressed()
        joueur.deplacer(touches)

        # Gestion des obstacles
        for obstacle in obstacles:
            obstacle.deplacer()
            obstacle.dessiner()

            # Vérification de collision
            if (
                joueur.x < obstacle.x + obstacle.taille
                and joueur.x + joueur.taille > obstacle.x
                and joueur.y < obstacle.y + obstacle.taille
                and joueur.y + joueur.taille > obstacle.y
            ):
                print("Collision !")
                jeu_en_cours = False

            # Supprimer les obstacles hors écran et ajouter de nouveaux
            if obstacle.y > HAUTEUR:
                obstacles.remove(obstacle)
                obstacles.append(Obstacle())
                score += 1

        # Dessiner le joueur
        joueur.dessiner()

        # Afficher le score
        font = pygame.font.Font(None, 36)
        texte_score = font.render(f"Score : {score}", True, BLANC)
        fenetre.blit(texte_score, (10, 10))

        # Mettre à jour l'écran
        pygame.display.flip()
        horloge.tick(30)

    pygame.quit()

# Lancer le jeu
if __name__ == "__main__":
    jeu()

Étape 6 : Lancer le jeu

Exécutez le fichier jeu.py avec la commande suivante dans votre terminal :

python jeu.py

Résultat attendu

Étape 7 : Améliorations possibles

Amusez-vous bien avec Pygame !