Java JavaFX

Latice – Jeu de plateau

Développement complet d'un jeu de plateau stratégique

Vue d'ensemble

Développement complet d'un jeu de plateau consistant à placer des tuiles sur un plateau pour les faire correspondre. Le projet a nécessité la conception d'une interface graphique avec JavaFX et l'intégration complète des règles de jeu complexes.

Rôle

Développeur

Technologies

Java, JavaFX, CSS

Compétences développées

AC11.01 | Implémenter des conceptions simples

Compétence clé mobilisée

Comment cette compétence a été développée :

  • Modélisation objet : Création de classes représentant les tuiles, le plateau, les règles du jeu avec encapsulation et héritage.
  • Architecture MVC : Implémentation d'une séparation claire entre la logique métier (modèle), l'affichage (vue) et le contrôle (contrôleur).
  • Gestion des événements : Implémentation des listeners JavaFX pour gérer les clics, drag & drop et autres interactions utilisateur.
  • Algorithmes de jeu : Codage des règles complexes de placement et de validation des tuiles selon les spécifications du jeu.

AC11.02 | Élaborer des conceptions simples

Compétence clé mobilisée

Comment cette compétence a été développée :

  • Diagrammes UML : Élaboration de diagrammes de classes et de séquence pour planifier l'architecture avant développement.
  • Maquettes d'interface : Conception préalable de maquettes pour l'interface JavaFX afin de valider l'ergonomie avant implémentation.
  • Décomposition fonctionnelle : Identification et organisation des différentes fonctionnalités du jeu en modules cohérents.
  • Documentation technique : Rédaction de spécifications techniques décrivant le comportement attendu de chaque composant.

AC11.03 | Faire des essais et évaluer leurs résultats

Compétence clé mobilisée

Comment cette compétence a été développée :

  • Tests fonctionnels : Vérification systématique de toutes les règles du jeu avec différents scénarios de placement.
  • Tests edge cases : Identification et test des cas limites (plateau plein, coups impossibles, etc.).
  • Débogage méthodique : Utilisation d'outils de débogage Java pour tracer l'exécution et identifier les anomalies.
  • Tests utilisateurs : Sessions de jeu avec des utilisateurs pour évaluer l'ergonomie et détecter les bugs non anticipés.

AC11.04 | Développer des interfaces utilisateurs

Compétence clé mobilisée

Comment cette compétence a été développée :

  • Conception d'interface JavaFX : Création d'une interface graphique intuitive avec un plateau de jeu visuel et gestion des tuiles.
  • Stylisation CSS : Utilisation de CSS pour personnaliser l'apparence des composants JavaFX et créer une identité visuelle cohérente.
  • Animations fluides : Mise en place d'animations pour les déplacements de tuiles et transitions d'état.
  • Feedback visuel : Indicateurs visuels pour les actions possibles, les erreurs et la validation des coups.

AC21.02 | Appliquer des principes d'accessibilité et d'ergonomie

Compétence clé mobilisée

Comment cette compétence a été développée :

  • Ergonomie utilisateur : Interface intuitive avec drag & drop naturel et indicateurs visuels clairs pour guider le joueur.
  • Contraste et lisibilité : Choix de couleurs contrastées pour distinguer facilement les tuiles et améliorer la lisibilité.
  • Responsive design : Adaptation de l'interface aux différentes résolutions d'écran pour une utilisation confortable.
  • Messages d'aide : Tooltips et messages informatifs pour aider les nouveaux joueurs à comprendre les règles.

AC21.03 | Adopter de bonnes pratiques de conception et de programmation

Compétence clé mobilisée

Comment cette compétence a été développée :

  • Conventions Java : Respect des conventions de nommage Java, indentation cohérente et structure de code claire.
  • Principes SOLID : Application des principes de responsabilité unique, ouverture/fermeture et séparation des préoccupations.
  • Gestion des erreurs : Utilisation appropriée des exceptions Java et gestion robuste des cas d'erreur.
  • Code documenté : Javadoc pour les méthodes publiques et commentaires explicatifs pour la logique complexe.

AC21.04 | Vérifier et valider la qualité de l'application par les tests

Compétence clé mobilisée

Comment cette compétence a été développée :

  • Tests unitaires JUnit : Création de tests unitaires pour valider chaque méthode et composant de manière isolée.
  • Couverture de code : Utilisation d'outils pour mesurer la couverture de tests et identifier les zones non testées.
  • Tests d'intégration : Validation du bon fonctionnement des différents composants ensemble.
  • Tests de régression : Vérification que les modifications n'introduisent pas de nouveaux bugs dans les fonctionnalités existantes.

AC15.02 | Mettre en place les outils de gestion de projet

Compétence clé mobilisée

Comment cette compétence a été développée :

  • Suivi des tâches : Utilisation d'un tableau Kanban pour organiser et suivre l'avancement des différentes fonctionnalités du jeu.
  • Gestion de versions : Utilisation de Git pour versionner le code, créer des branches par fonctionnalité et maintenir un historique clair.
  • Planification itérative : Découpage du projet en sprints avec des objectifs définis pour chaque itération de développement.
  • Documentation de projet : Rédaction d'un cahier des charges et d'une documentation technique pour cadrer et guider le développement.

AC16.03 | Identifier les statuts, les fonctions et les rôles de chaque membre d'une équipe pluridisciplinaire

Compétence clé mobilisée

Comment cette compétence a été développée :

  • Répartition des rôles : Identification claire des responsabilités de chaque membre, entre développement back-end, conception graphique et tests.
  • Coordination des contributions : Mise en place d'une organisation permettant à chacun d'intervenir sur son domaine sans conflit.
  • Points d'avancement : Organisation de réunions régulières pour synchroniser les différents membres sur l'état du projet.
  • Complémentarité des compétences : Valorisation des expertises de chacun pour couvrir l'ensemble des besoins techniques du projet.

AC16.04 | Acquérir les compétences interpersonnelles pour travailler en équipe

Compétence clé mobilisée

Comment cette compétence a été développée :

  • Communication active : Échanges réguliers et clairs pour partager les avancées, signaler les blocages et proposer des solutions.
  • Revue de code : Pratique du peer review pour améliorer la qualité du code collectivement et partager les bonnes pratiques.
  • Gestion des conflits : Résolution constructive des désaccords techniques en favorisant l'écoute et le consensus.
  • Entraide et montée en compétences : Partage des connaissances entre membres pour permettre à chacun de progresser tout au long du projet.

Résultats et apprentissages

Ce projet m'a permis de maîtriser la création d'interfaces graphiques complexes avec JavaFX, tout en développant mes compétences en programmation orientée objet et en résolution de problèmes algorithmiques.

L'implémentation des règles de jeu a nécessité une analyse approfondie et une décomposition méthodique des problèmes, renforçant ma capacité à structurer la pensée et concevoir des solutions élégantes.

Résultat : Un jeu fonctionnel, stable et agréable à jouer, démontrant une maîtrise technique et une attention particulière portée à l'expérience utilisateur.