1. Présentation du Projet

Neo-Snake 3000 est une version moderne et stylisée du jeu classique Snake, développée en Python avec la bibliothèque Pygame. Le projet adopte une esthétique « Néon » (Anthracite, Vert et Rouge Néon) et propose des fonctionnalités avancées telles qu’un système de gestion des scores persistants (via JSON) et plusieurs niveaux de difficulté.

Objectifs du projet

  • Fournir une expérience de jeu fluide et réactive.
  • Implémenter une architecture de code modulaire pour faciliter l’évolution du projet.
  • Gérer la persistance des données (Top 3 des meilleurs scores).
  • Offrir une interface utilisateur (UI) claire avec différents états de jeu (Menu, Jeu, Game Over).

2. Dépendances et Installation

Prérequis

  • Python 3.x installé sur votre machine.
  • Pygame : La bibliothèque principale pour le rendu graphique et la gestion des événements.

Installation

  1. Assurez-vous d’avoir Python installé.
  2. Installez la bibliothèque Pygame via pip :
  3. pip install pygame
  4. Placez tous les fichiers .py dans le même répertoire.

3. Structure du Projet

Le projet est divisé en plusieurs modules pour séparer les responsabilités (Logique, Affichage, Données) :

FichierRôle
main.pyPoint d’entrée du programme. Initialise et lance la boucle principale.
game.pyCœur du jeu. Gère les états, les collisions et la coordination entre les modules.
snake.pyLogique du serpent (déplacement, croissance, détection de collision).
food.pyGestion de l’apparition aléatoire et du rendu de la nourriture.
ui.pyGestion de tous les affichages textuels (menus, scores, saisie du nom).
utils.pyConstantes (couleurs, dimensions) et fonctions utilitaires (JSON).

4. Mode Opératoire (Utilisation)

Lancer le jeu

Exécutez la commande suivante dans votre terminal :

python main.py

Contrôles

  • Menu Principal :
    • ESPACE : Démarrer la partie.
    • FLÈCHES GAUCHE / DROITE : Changer le niveau de difficulté (EASY, MEDIUM, HARD).
  • En jeu :
    • FLÈCHES DIRECTIONNELLES : Diriger le serpent.
  • Game Over :
    • R : Revenir au menu.
    • Q : Quitter le jeu.
    • CLAVIER + ENTRÉE : Saisir votre nom si vous avez battu un record.

5. Détails Techniques pour la Maintenance

Système de Coordonnées

Le jeu utilise un système de grille basé sur BLOCK_SIZE (défini dans utils.py, par défaut 20px). Tous les déplacements et positions sont des multiples de cette valeur.

Gestion des États (game.py)

La variable self.state dans la classe Game pilote l’affichage et la logique :

  • MENU : Écran d’accueil.
  • PLAYING : Boucle de jeu active.
  • GAME_OVER : Affichage des scores et arrêt du mouvement.

Persistance des Scores

Les scores sont stockés dans un fichier highscores.json. Si le fichier est absent ou corrompu, le système charge des valeurs par défaut (« Ordi » – 0). La fonction save_highscore trie automatiquement les scores et ne conserve que le Top 3.


6. Améliorations Possibles

Pour faire évoluer Neo-Snake 3000, voici plusieurs pistes d’améliorations :

  1. Audio : Ajouter des effets sonores lors de la prise de nourriture et une musique de fond « Synthwave » pour coller au thème Néon.
  2. Obstacles : Introduire des murs à l’intérieur de la zone de jeu selon les niveaux.
  3. Bonus : Créer des types de nourriture spéciaux (ex: nourriture dorée doublant les points ou ralentissant temporairement le serpent).
  4. Animations : Ajouter un effet de clignotement ou de transition fluide lors du Game Over.
  5. Multi-langue : Externaliser les chaînes de caractères de ui.py vers un fichier de configuration pour supporter l’anglais et le français facilement.

7. Guide de Modification Rapide

  • Changer la vitesse du jeu : Modifiez le dictionnaire DIFFICULTIES dans utils.py.
  • Changer les couleurs : Modifiez les tuples RGB en haut du fichier utils.py.
  • Ajuster la zone de jeu : Changez WINDOW_WIDTH et WINDOW_HEIGHT dans utils.py. Le système de nourriture s’adaptera automatiquement.

Source