
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
- Assurez-vous d’avoir Python installé.
- Installez la bibliothèque Pygame via pip :
pip install pygame- Placez tous les fichiers
.pydans 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) :
| Fichier | Rôle |
main.py | Point d’entrée du programme. Initialise et lance la boucle principale. |
game.py | Cœur du jeu. Gère les états, les collisions et la coordination entre les modules. |
snake.py | Logique du serpent (déplacement, croissance, détection de collision). |
food.py | Gestion de l’apparition aléatoire et du rendu de la nourriture. |
ui.py | Gestion de tous les affichages textuels (menus, scores, saisie du nom). |
utils.py | Constantes (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 :
- Audio : Ajouter des effets sonores lors de la prise de nourriture et une musique de fond « Synthwave » pour coller au thème Néon.
- Obstacles : Introduire des murs à l’intérieur de la zone de jeu selon les niveaux.
- Bonus : Créer des types de nourriture spéciaux (ex: nourriture dorée doublant les points ou ralentissant temporairement le serpent).
- Animations : Ajouter un effet de clignotement ou de transition fluide lors du Game Over.
- Multi-langue : Externaliser les chaînes de caractères de
ui.pyvers 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
DIFFICULTIESdansutils.py. - Changer les couleurs : Modifiez les tuples RGB en haut du fichier
utils.py. - Ajuster la zone de jeu : Changez
WINDOW_WIDTHetWINDOW_HEIGHTdansutils.py. Le système de nourriture s’adaptera automatiquement.