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]]