Aller au contenu
Retour aux projets

Reprendre mon premier jeu Python pour mesurer mes progrès

Reprise de l'un de mes premiers programmes Python pour comparer sa structure initiale avec les pratiques de développement acquises depuis.

Problème

Ce projet est issu de l'un de mes premiers programmes en Python, développé avant mes études en informatique.

Plusieurs années après sa création, j'ai décidé de revenir sur ce projet afin d'évaluer sa structure avec les connaissances acquises depuis. La version originale regroupait une grande partie de la logique du jeu dans une structure peu adaptée à son évolution.

L'objectif de la refonte était donc de transformer ce premier projet en une base plus lisible, modulaire et maintenable, tout en conservant le principe et l'identité du jeu original.

Approche

J'ai commencé par restructurer le projet autour d'une architecture orientée objet et par séparer les différentes responsabilités.

La logique principale est orchestrée par la classe Game, tandis que les différentes fonctionnalités sont réparties entre plusieurs composants :

Game
├── Snake
├── Apple
├── ScoreManager
├── SoundManager
└── AnimationManager

Cette refonte s'est accompagnée de plusieurs améliorations fonctionnelles :

  • sauvegarde persistante du meilleur score
  • système de pause et de reprise
  • difficulté progressive en fonction du score
  • effets sonores
  • animations lors des événements importants
  • contrôles ZQSD et flèches
  • génération d'un exécutable avec PyInstaller

Turtle reste chargé de l'affichage du jeu. Pygame intervient uniquement pour la lecture des effets sonores, tandis que Pillow sert à préparer certains éléments graphiques utilisés par Turtle.

Résultats

La refonte sépare désormais l'orchestration du jeu, le serpent, les pommes, le score, le son et les animations dans des composants distincts.

Un script PyInstaller permet de générer un exécutable. Des niveaux progressifs, des effets sonores et des animations complètent la version initiale.

En comparant la version d'origine et la refonte, la différence la plus nette porte sur la structure du code : responsabilités séparées, build automatisé, base plus simple à faire évoluer.

Limites

Le choix de Turtle limite naturellement les possibilités graphiques et les performances du jeu. Cette technologie reste cependant suffisante pour le périmètre du projet et permet de conserver une implémentation simple et accessible.

Le projet reste également volontairement limité en fonctionnalités : l'objectif principal était de travailler sur la qualité de la structure logicielle, plutôt que de développer un jeu complexe.

Prochaines étapes

Les prochaines évolutions porteraient principalement sur la fiabilisation et l'enrichissement du projet :

  • ajouter des tests automatisés sur la logique du jeu, notamment les déplacements, collisions et gestion du score
  • documenter et automatiser davantage le processus de build et de distribution
  • ajouter de nouveaux modes de jeu ou éléments de gameplay, comme des obstacles ou différents niveaux de difficulté