Pourquoi créer un jeu en Python pour la NSI ?
La spécialité Numérique et Sciences Informatiques (NSI) ne se limite pas à la théorie. Créer un projet concret, comme un jeu vidéo, est l'une des meilleures façons de consolider tes connaissances en programmation, en algorithmique et en gestion de projet. Avec la bibliothèque Pygame, tu vas pouvoir donner vie à tes idées en manipulant des concepts clés du programme : les boucles, les conditions, les fonctions, les listes, et même la programmation orientée objet. Ce tutoriel te guidera pas à pas pour créer ton premier jeu, un classique : un vaisseau qui esquente des astéroïdes.
Préparer son environnement de développement
Avant de coder, il faut s'équiper. Suis ces étapes pour tout installer correctement.
Étape 1 : Installer Python
Si ce n'est pas déjà fait, télécharge la dernière version de Python sur le site officiel (python.org). Durant l'installation, n'oublie pas de cocher la case "Add Python to PATH", c'est crucial !
Étape 2 : Installer Pygame
Ouvre ton terminal (Invite de commandes sur Windows, Terminal sur Mac/Linux) et tape la commande magique :
pip install pygameCette commande utilise pip, le gestionnaire de paquets de Python, pour télécharger et installer la bibliothèque Pygame et toutes ses dépendances.
Étape 3 : Choisir un éditeur de code
Tu peux utiliser celui que tu préfères : VS Code, PyCharm, Thonny... L'important est de te sentir à l'aise. Crée un nouveau fichier que tu nommeras mon_jeu.py.
Les bases de Pygame : fenêtre, boucle et événements
Un jeu Pygame repose sur trois piliers fondamentaux : initialiser la fenêtre, gérer les événements (clavier, souris), et rafraîchir l'écran en continu.
Voici le squelette de base de tout jeu Pygame :
import pygame
pygame.init()
# Création de la fenêtre
largeur, hauteur = 800, 600
ecran = pygame.display.set_mode((largeur, hauteur))
pygame.display.set_caption("Mon Premier Jeu NSI")
# Boucle principale du jeu
en_cours = True
while en_cours:
# Gestion des événements
for event in pygame.event.get():
if event.type == pygame.QUIT:
en_cours = False
# Remplir l'écran avec une couleur (noir ici)
ecran.fill((0, 0, 0))
# Mettre à jour l'affichage
pygame.display.flip()
pygame.quit()Exécute ce code. Une fenêtre noire devrait apparaître ! Pour la fermer, clique sur la croix. La boucle while tourne à toute vitesse (c'est la game loop), vérifiant en permanence si tu as cliqué sur "QUIT". C'est le cœur battant de ton jeu.
Créer un jeu complet : Le Chasseur d'Astéroïdes
Maintenant, ajoutons du gameplay. Nous allons créer un vaisseau contrôlé par les flèches du clavier qui tire sur des astéroïdes tombant du haut de l'écran.
1. Dessiner et déplacer le vaisseau
Nous allons représenter le vaisseau par un rectangle. Nous stockons sa position (x, y) et sa vitesse.
# Avant la boucle
vaisseau_x = largeur // 2
vaisseau_y = hauteur - 50
vaisseau_vitesse = 5
# Dans la boucle, après la gestion des événements
touches = pygame.key.get_pressed()
if touches[pygame.K_LEFT] and vaisseau_x > 0:
vaisseau_x -= vaisseau_vitesse
if touches[pygame.K_RIGHT] and vaisseau_x < largeur - 50:
vaisseau_x += vaisseau_vitesse
# Dessiner le vaisseau (un rectangle)
pygame.draw.rect(ecran, (0, 100, 255), (vaisseau_x, vaisseau_y, 50, 30))pygame.key.get_pressed() permet de détecter les touches maintenues enfoncées, parfait pour un déplacement fluide.
2. Gérer les tirs et les astéroïdes avec des listes
C'est ici que les listes, étudiées en NSI, deviennent essentielles. Nous allons gérer une liste de projectiles et une liste d'astéroïdes.
# Initialisation des listes
projectiles = []
asteroides = []
# Fonction pour créer un astéroïde
def ajouter_asteroide():
x = random.randint(0, largeur - 30)
y = -30
asteroides.append([x, y])
# Dans la boucle : faire tomber les astéroïdes, déplacer les tirs, gérer les collisions.
# (Le code complet est trop long pour cet extrait, mais le principe est là).Tu utiliseras une boucle for pour parcourir la liste projectiles et faire monter chaque tir. Une autre boucle fera descendre chaque astéroïde de la liste asteroides. La détection de collision se fera en comparant les coordonnées des rectangles (projectile / astéroïde) avec une condition if.
3. Ajouter un score et une fin de jeu
Pour le score, crée une variable score = 0 que tu incrémentes à chaque collision réussi. Pour afficher le score, il faut utiliser le module pygame.font pour créer un texte. La fin de jeu intervient si un astéroïde touche le bas de l'écran ou le vaisseau.
Aller plus loin : tes idées pour le projet NSI
Félicitations ! Tu as maintenant les bases d'un jeu fonctionnel. Pour en faire un vrai projet NSI, voici des idées d'amélioration :
- Graphismes : Remplace les rectangles par de vraies images avec
pygame.image.load(). - Son : Ajoute des bruitages pour les tirs et explosions avec
pygame.mixer. - Niveaux de difficulté : Fais augmenter la vitesse des astéroïdes ou leur nombre au fil du temps.
- Menu de démarrage : Crée un écran titre avec un bouton "Jouer".
- Sauvegarde du meilleur score : Écris le score dans un fichier texte pour le conserver.
N'oublie pas de bien commenter ton code et de structurer ton programme avec des fonctions. Cela montrera ta maîtrise des compétences évaluées en NSI. Bonne programmation !
