You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/fr/6-space-game/1-introduction/assignment.md

93 lines
5.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Concevoir un jeu : Appliquer les motifs de conception
## Présentation du devoir
Mettez en pratique vos nouvelles connaissances des motifs de conception en créant un prototype de jeu simple ! Ce devoir vous aidera à pratiquer à la fois les motifs architecturaux (héritage ou composition) et le système de communication pub/sub que vous avez appris dans la leçon.
## Instructions
Créez une représentation simple dun jeu qui démontre les motifs de conception de cette leçon. Votre jeu doit être fonctionnel mais ne nécessite pas de graphismes complexes concentrez-vous sur larchitecture sous-jacente et les motifs de communication.
### Exigences
**Choisissez votre motif darchitecture :**
- **Option A** : Utilisez lhéritage basé sur les classes (comme lexemple `GameObject``Movable``Hero`)
- **Option B** : Utilisez la composition (comme lapproche par fonction fabrique avec comportements mixtes)
**Implémentez la communication :**
- **Incluez** une classe `EventEmitter` pour la messagerie pub/sub
- **Mettez en place** au moins 2-3 types de messages différents (comme `PLAYER_MOVE`, `ENEMY_SPAWN`, `SCORE_UPDATE`)
- **Connectez** les entrées utilisateur (clavier/souris) aux événements du jeu via le système dévénements
**Éléments du jeu à inclure :**
- Au moins un personnage contrôlé par le joueur
- Au moins un autre objet du jeu (ennemi, objet à collecter ou élément environnemental)
- Interaction de base entre les objets (collision, collecte ou communication)
### Idées de jeux suggérées
**Jeux simples à considérer :**
- **Jeu de serpent** Les segments du serpent suivent la tête, la nourriture apparaît aléatoirement
- **Variation de Pong** La raquette répond aux entrées, la balle rebondit sur les murs
- **Jeu de collecte** Le joueur se déplace pour collecter des objets tout en évitant les obstacles
- **Bases du Tower Defense** Les tours détectent et tirent sur les ennemis en mouvement
### Directives pour la structure du code
```javascript
// Exemple de structure de départ
const Messages = {
// Définissez vos messages de jeu ici
};
class EventEmitter {
// Votre implémentation du système d'événements
}
// Choisissez soit l'approche basée sur les classes OU la composition
// Exemple basé sur les classes :
class GameObject { /* base properties */ }
class Player extends GameObject { /* player-specific behavior */ }
// OU exemple de composition :
const gameObject = { /* base properties */ };
const movable = { /* movement behavior */ };
function createPlayer() { /* combine behaviors */ }
```
### Tester votre implémentation
**Vérifiez que votre code fonctionne en :**
- **Testant** que les objets se déplacent ou changent lorsque les événements sont déclenchés
- **Confirmant** que plusieurs objets peuvent répondre au même événement
- **Vérifiant** que vous pouvez ajouter de nouveaux comportements sans modifier le code existant
- **Assurant** que les entrées clavier/souris déclenchent correctement les événements de jeu
## Directives de soumission
**Votre soumission doit inclure :**
1. **Fichier(s) JavaScript** avec votre implémentation de jeu
2. **Fichier HTML** pour exécuter et tester votre jeu (peut être simple)
3. **Commentaires** expliquant quel motif vous avez choisi et pourquoi
4. **Brève documentation** de vos types de messages et leur fonction
## Grille dévaluation
| Critère | Exemplaire (3 points) | Adéquat (2 points) | À améliorer (1 point) |
|----------|-----------------------|--------------------|----------------------|
| **Motif darchitecture** | Implémente correctement soit lhéritage SOIT la composition avec une hiérarchie claire des classes/objets | Utilise le motif choisi avec des problèmes ou incohérences mineurs | Tente dutiliser le motif mais limplémentation a des problèmes importants |
| **Implémentation Pub/Sub** | EventEmitter fonctionne correctement avec plusieurs types de messages et un flux dévénements approprié | Système pub/sub basique fonctionne avec une certaine gestion dévénements | Système dévénements présent mais ne fonctionne pas de façon fiable |
| **Fonctionnalité du jeu** | Trois éléments interactifs ou plus qui communiquent via les événements | Deux éléments interactifs avec communication événementielle basique | Un élément répond aux événements ou interaction basique |
| **Qualité du code** | Code propre, bien commenté, logique et moderne en JavaScript | Code généralement bien organisé avec des commentaires adéquats | Code fonctionnel mais manque dorganisation ou de commentaires clairs |
**Points bonus :**
- **Mécaniques de jeu créatives** qui mettent en valeur des usages intéressants des motifs
- **Méthodes dentrée multiples** (événements clavier ET souris)
- **Architecture évolutive** facile à étendre avec de nouvelles fonctionnalités
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Avertissement** :
Ce document a été traduit à laide du service de traduction automatique [Co-op Translator](https://github.com/Azure/co-op-translator). Bien que nous nous efforcions dassurer lexactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue dorigine doit être considéré comme la source faisant foi. Pour des informations critiques, une traduction professionnelle réalisée par un humain est recommandée. Nous ne saurions être tenus responsables des malentendus ou interprétations erronées résultant de lutilisation de cette traduction.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->