Aller au contenu principal
🚂
🚂
🚂
🚂
🚂
🚂
🚂
🚂
🚂
🚂
🚂
🚂
🎮Projet Universitaire SAE

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

Java 17
🎨 JavaFX
🏗️ Architecture MVC
👥 Travail d'équipe

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

© 2025 Alexis Robin