Skip to content

Latest commit

 

History

History
93 lines (69 loc) · 5.59 KB

File metadata and controls

93 lines (69 loc) · 5.59 KB

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 d’un 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 l’architecture sous-jacente et les motifs de communication.

Exigences

Choisissez votre motif d’architecture :

  • Option A : Utilisez l’héritage basé sur les classes (comme l’exemple GameObjectMovableHero)
  • Option B : Utilisez la composition (comme l’approche 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 d’architecture Implémente correctement soit l’hé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 d’utiliser le motif mais l’implé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 d’organisation ou de commentaires clairs

Points bonus :

  • Mécaniques de jeu créatives qui mettent en valeur des usages intéressants des motifs
  • Méthodes d’entrée multiples (événements clavier ET souris)
  • Architecture évolutive facile à étendre avec de nouvelles fonctionnalités

Avertissement :
Ce document a été traduit à l’aide du service de traduction automatique Co-op Translator. Bien que nous nous efforcions d’assurer l’exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d’origine 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 l’utilisation de cette traduction.