Jeu Train
Java & JavaFX
Adaptation numérique mettant en pratique les principes de Programmation Orientée Objet et le développement d'Interfaces Homme-Machine
Points Clés du Projet
Gameplay Stratégique
Système de cartes avec effets uniques, synergies entre couleurs et mécaniques de points de victoire
Architecture Solide
Application rigoureuse des principes SOLID et du pattern MVC pour une base de code maintenable
Interface Moderne
IHM intuitive avec animations fluides, feedback visuel et expérience utilisateur optimisée
Architecture Technique
Une base de code robuste et maintenable
Principes de POO Appliqués
Héritage
Hiérarchie de classes pour les différents types de cartes et trains
Polymorphisme
Comportements spécifiques selon le type avec interfaces communes
Encapsulation
Protection des données internes et exposition contrôlée des APIs
Abstraction
Simplification des interactions complexes via des interfaces claires
Architecture MVC
Modèle
- • Logique métier du jeu
- • Gestion des états
- • Règles de validation
- • Persistance des données
Vue
- • Interface JavaFX
- • Composants réutilisables
- • Animations fluides
- • Responsive design
Contrôleur
- • Gestion des événements
- • Coordination M-V
- • Validation des actions
- • État de l'application
Exemples de Code
Classe de Carte Abstraite
public abstract class CarteTrain { protected String nom; protected Couleur couleur; protected int valeurBase; public abstract int calculerPoints(Plateau plateau); public abstract void appliquerEffet(Joueur joueur); protected int calculerBonus(List<CarteTrain> cartes) { // Logique de calcul des synergies return cartes.stream() .filter(c -> c.couleur == this.couleur) .mapToInt(c -> c.valeurBase) .sum() / 2; } }
Contrôleur de Partie
@FXML public class PartieController { @FXML private GridPane plateauGrid; @FXML private Label scoreLabel; private PartieModel model; private AnimationTimer gameLoop; @FXML public void jouerCarte(ActionEvent event) { CarteTrain carte = getCarteSelectionnee(); if (model.validerAction(carte)) { animerPlacement(carte); model.jouerCarte(carte); updateUI(); } } }
Compétences Développées
Techniques
Java Avancé
Maîtrise des concepts avancés : génériques, streams, lambda expressions
JavaFX & FXML
Création d'interfaces modernes avec animations et data binding
Design Patterns
Application de patterns : Observer, Strategy, Factory, Singleton
Transversales
Travail en Équipe
Collaboration via Git, revues de code, méthodologie Agile
Gestion de Projet
Planification, estimation, respect des délais et livrables
Tests & Qualité
Tests unitaires JUnit, intégration continue, documentation
Intéressé par ce projet ?
N'hésitez pas à me contacter pour en discuter davantage ou voir d'autres projets