Un moteur de jeu de plateforme 2D complet et performant, développé en Java 17 et JavaFX. Ce projet va bien au-delà d'un simple clone en intégrant une architecture moderne Entity Component System (ECS), un moteur physique robuste, et une intelligence artificielle avancée.
- 🏗️ Architecture ECS (Entity Component System) : Conception hautement modulaire qui sépare strictement les données (
Components) de la logique métier (Systems). Cela permet une extensibilité maximale et d'excellentes performances. - 🚀 Moteur Physique Avancé : Gestion complète de la gravité, de l'inertie, des forces cinétiques de saut et détection précise des collisions avec des boîtes englobantes (AABB).
- 🧠 Intelligence Artificielle (IA) : Ennemis dotés de comportements dynamiques (
PatrolAIpour les rondes,ChaseAIpour la poursuite du joueur de manière réactive). - 🎮 Système de Gestion d'États : Transition fluide entre les différentes phases du jeu (Boot, Menus, Play, Pause, Game Over) via un
StateManagerrobuste. - ⚡ Event-Driven Architecture : Utilisation d'un
EventBuspersonnalisé pour une communication asynchrone et découplée entre les différents modules du jeu (calcul du score, événements de collision, notifications de mort). - 🎵 Système d'Assets et Audio : Intégration sonore spatiale via JavaFX Media et rendu optimisé des sprites.
- Langage : Java 17
- Framework UI : JavaFX 17
- Gestion de dépendances et Build : Maven
- Design Patterns Utilisés :
- Entity-Component-System (ECS)
- Observer (via EventBus)
- State Pattern (pour les phases du jeu et l'IA)
- Singleton (pour les gestionnaires d'assets)
- JDK 17 (ou supérieur)
- Maven 3.6+
-
Cloner le dépôt
git clone https://github.com/votre-username/Super-Mario-JavaFX-ECS.git cd Super-Mario-JavaFX-ECS -
Compiler le projet via Maven
mvn clean install
-
Lancer le jeu
mvn javafx:run
| Action | Touche(s) |
|---|---|
| Se déplacer / Courir | Flèches directionnelles ou Q / D |
| Sauter | Espace ou Z / Flèche Haut |
| Mettre en pause | P |
| Recommencer | R |
src/main/java/com/mariofx/
├── engine/ # Cœur du moteur (GameLoop, StateManager, ECS, EventBus)
├── game/ # Logique spécifique au jeu (ScoreSystem, TimerSystem)
├── input/ # Gestionnaires d'entrées clavier
├── level/ # Génération et gestion des niveaux
├── model/ # Modèles de données métier
├── physics/ # Moteur de collisions et de gravité
├── util/ # Outils et constantes globales
└── view/ # Rendu graphique sur le Canvas JavaFX
Développé pour démontrer des compétences avancées en ingénierie logicielle et développement d'architecture de jeux vidéo orientée objet en Java.