Projet Scolaire (S2)

Jeu des Labyrinthes

Développement d'une application JavaFX avec architecture SOLID

Java

Programmation orientée objet

JavaFX

Interface graphique

JUnit 5

Tests unitaires

Ce projet consiste en la conception et le développement d'un jeu de labyrinthe complet avec interface graphique. Le joueur doit naviguer à travers différents niveaux et atteindre la sortie.
Au-delà du gameplay, l'objectif principal de ce projet était technique : produire un code propre, modulaire et évolutif en appliquant strictement les principes de la programmation orientée objet.

Gameplay Interactif

Déplacement fluide du personnage et interaction avec l'environnement

Génération de niveaux

Chargement dynamique des cartes de labyrinthe

Boutique de cosmétiques

Système de personnalisation permettant de débloquer des apparences en utilisant ses points

Sauvegarde des joueurs

Persistance des données (scores, inventaire) pour conserver la progression entre les sessions

Analyse réflexive

Une analyse honnête du parcours, des obstacles rencontrés et des compétences acquises durant ce projet.

Mon rôle

Responsable du refactoring de l'interface JavaFX (migration vers FXML), de la mise en place d'un système de routage centralisé, et co-responsable de l'architecture (suppression des Singletons, application des principes SOLID et du pattern Observer).

Défis & Solutions

Le défi principal a été d'intégrer rigoureusement les principes SOLID et divers design patterns (Factory, Observer) dans un code existant. La création et l'intégration de différents algorithmes de génération de labyrinthes ont également posé des défis d'abstraction.

Apprentissages

J'ai concrètement appris à refactoriser une application pour la rendre plus maintenable. Le passage de propriétés JavaFX couplées au modèle vers un pattern Observer/Observable classique a été très formateur.

Compétences transversales

Travail en équipe

Coordination avec un groupe de 4 personnes sur 8 semaines, avec une répartition claire des tâches et des sessions de refactoring en commun.

Adaptabilité

Capacité à remettre en question et réécrire des parties entières du code (comme le système de routage ou les singletons) pour améliorer la qualité globale du projet.