Terminale NSI – 2022/2023

Jeu Snake en Python

Recréation du classique jeu Snake avec Pygame et programmation orientée objet

Retour aux projets

Contexte

Projet réalisé en Terminale NSI (année 2022/2023) dans le cadre de la spécialité Numérique et Sciences Informatiques. L'objectif était de développer une version du célèbre jeu Snake en Python avec la bibliothèque Pygame, en appliquant les concepts de la programmation orientée objet.

Le projet met en œuvre des algorithmes pour la gestion du serpent (croissance, déplacements), la détection de collisions (murs et corps) et la génération aléatoire des pommes.

Rapport de projet (PDF)

Fonctionnalités

  • Déplacement fluide du serpent via les touches directionnelles
  • Croissance du serpent à chaque pomme mangée
  • Détection de collision avec les murs et le propre corps
  • Génération aléatoire des pommes sur la grille
  • Compteur de score affiché en temps réel
  • Gestion de la vitesse et du rythme de jeu via Clock

Technologies utilisées

Python 3 Pygame POO (Programmation Orientée Objet) Algorithmes de collision

Extrait – Classes Snake et gestion des collisions

class Snake:
    def __init__(self):
        self.corps = [Point(10, 10)]
        self.vX, self.vY = 1, 0
        self.score = 0

    def avance(self):
        nouvelle_tete = Point(self.corps[0].x + self.vX,
                              self.corps[0].y + self.vY)
        self.corps.insert(0, nouvelle_tete)
        self.corps.pop()

    def collision(self):
        # Collision avec les murs
        if not (0 <= self.corps[0].x < DIMX and 0 <= self.corps[0].y < DIMY):
            return True
        # Collision avec le corps
        return any(self.corps[0].x == p.x and self.corps[0].y == p.y
                   for p in self.corps[1:])

    def grandir(self):
        derniere = self.corps[-1]
        self.corps.append(Point(derniere.x, derniere.y))

Galerie

Logo Snake
Capture du jeu Snake