Cette évaluation consiste à **développer intégralement un mini-jeu en Java**, en vous appuyant sur : - votre **diagramme UML** (déjà validé dans la compétence [[Diagramme de classes UML]]), - votre **grille en pixels**, - la **fenêtre initiale** que vous avez dessinée, - la liste des **objectifs fonctionnels** de votre fiche projet. 👉 Vous entrez maintenant dans la **phase d’implémentation complète** du jeu. # 🟧 Étape 1 — Implémenter toutes les classes Java À partir de votre diagramme UML, vous devez coder **toute la structure logique** du jeu. ### ✔ Travail demandé Pour _chaque_ classe de votre UML : - créer la classe Java correspondante, - déclarer **tous les attributs**, - écrire les **constructeurs** nécessaires, - ajouter les **accesseurs** (`get...`) et **modifieurs** (`set...`), - respecter strictement les relations entre classes (composition, agrégation, héritage…). ### ✔ Rappel important Votre code doit **respecter votre UML**, sans ajout improvisé ou fonctionnalité non prévue. # 🟨 Étape 2 — Initialiser tous les attributs selon la grille Lorsque vos classes sont créées, vous devez **initialiser l’intégralité des attributs** selon : - les dimensions et proportions de votre **grille en pixels**, - les positions prévues dans votre **plan graphique**, - les tailles (sprite, largeur, hauteur), - les valeurs initiales définies dans votre UML. ### ✔ Travail demandé Pour chaque objet : - initialiser sa **position** (x, y en pixels ou coordonnées dans une grille), - initialiser ses **dimensions**, - initialiser ses **valeurs internes** (vitesse, points de vie, état…), - créer les **collections** associées (liste d’ennemis, obstacles…), - construire la **grille du niveau** si votre jeu en utilise une. ### ✔ Exemple Si la case mesure 32 px × 32 px et que Mario commence en (3,5) : ```java x = 3 * TAILLE_CASE; y = 5 * TAILLE_CASE; ``` # 🟦 Étape 3 — Programmer l’affichage graphique du jeu Vous devez maintenant coder l’interface graphique correspondant à votre plan : - taille exacte de la fenêtre, - layout général, - décor et éléments fixes, - affichage des objets du jeu. ### ✔ Travail demandé - Créer la classe `Fenetre` (`JFrame`), - Créer un **panneau personnalisé** (`JPanel`), - Redéfinir `paintComponent(Graphics g)` pour afficher : - le décor, - les zones interactives, - les personnages et objets. # 🟩 Étape 4 — Rendre le jeu fonctionnel Après l’affichage statique, votre jeu doit devenir **interactif et animé**. ### ✔ Travail demandé - Utiliser un **Thread** pour l’animation, - Mettre à jour votre modèle à chaque boucle, - Rafraîchir l’affichage avec `repaint()`, - Gérer les interactions clavier ou souris selon vos objectifs, - Tester chaque fonctionnalité en conditions réelles. ### ✔ Validation des objectifs fonctionnels Votre fiche projet répertorie les fonctionnalités attendues : 👉 Fiche projet : [https://cloudlasalle.sharepoint.com/sites/apex/_layouts/15/guestaccess.aspx?share=IQDmajLNB8TjT7KfV_SsBz9FAWOZ6XTdFjCGpgH40ySmsbc&e=CqqnY7](https://cloudlasalle.sharepoint.com/sites/apex/_layouts/15/guestaccess.aspx?share=IQDmajLNB8TjT7KfV_SsBz9FAWOZ6XTdFjCGpgH40ySmsbc&e=CqqnY7) Pour chaque objectif : - **F** = Fonctionnel - **PF** = Partiellement fonctionnel - **NF** = Non fonctionnel Ajoutez vos améliorations personnelles si vous êtes allé plus loin. ### 🎖 Barème de validation - 🥉 **Bronze** → 10 objectifs fonctionnels - 🥈 **Argent** → 15 objectifs fonctionnels - 🥇 **Or** → 20 objectifs ou plus # 🟪 Étape 5 — Soutenance du projet (15 min) Cette soutenance valide votre maîtrise du jeu **et du code**. ### ✔ La démonstration doit montrer - déplacements, - interactions, - collisions, - gestion des états, - animations, - menus éventuels, - toute fonctionnalité développée. ### ✔ Vous devez être capable d’expliquer - le fonctionnement de vos classes, - l’organisation générale du projet, - la structure de votre boucle de jeu, - chaque élément important **que vous n’avez pas étudié en cours** (images, sons, techniques avancées…). 🎯 **Objectif : démontrer votre compréhension complète du jeu et de votre code.** # 🗓️ Historique > Dernière mise à jour : 22 novembre 2025 > Rédigé par : [[Julien DUQUENNOY]]