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

5.6 KiB

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 GameObjectMovableHero)
  • 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

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

Avertissement :
Ce document a été traduit à laide du service de traduction automatique 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.