Skip to content
Steeve Droz edited this page May 15, 2017 · 3 revisions

Conventions

Concernant l'ajout d'une énigme

  1. Le fichier de l'énigme se trouvent dans le sous-répertoire /Enigmas et portent un nom se terminant par EnigmaPanel. Exemple : SimpleEnigmaPanel.
  2. Toutes les classes énigmes héritent de EnigmaPanel.
  3. Les classes utilisées par les énigmes se trouvent dans /Enigmas/Components.
  4. L'énigme en cours de développement est appelée par la méthode EnigmaReferencer.DebugEnigma() comme ceci : return new Enigma(new XXX(), "YYY");XXX est le nom de votre classe et YYY est le titre unique de votre énigme tel qu'il sera affiché à l'écan.
  5. Les énigmes terminées sont référencées dans la méthode EnigmaReferencer.ReferenceEnigmas() selon le schéma suivant : enigmas.Add(new Enigma(new XXX(), "YYY"));XXX est le nom de votre classe et YYY est le titre unique de votre énigme tel qu'il sera affiché à l'écran.
  6. Dans le fichier enigmas.xml, chaque énigme est représentée par un nœud selon le schéma présenté plus bas
  7. Lorsque le programme est lancé en mode DEBUG, seule l'énigme retournée par EnigmaReferencer.DebugEnigma() sera lancée et donner le bon mot-clé ou passer à l'énigme suivante fera quitter le jeu.
  8. Lorsque le programme est lancé en mode RELEASE, toutes les énigmes présentes dans EnigmaReferencer.ReferenceEnigmas feront partie du jeu et celui-ci se lancera de manière normale. Afin de les retrouver facilement, ces énigmes sont classées par ordre alphabétique du nom de leur classe.

Format d'enigmas.xml

<enigma title="TITRE">
    <answer>RÉPONSE</answer>
    <hint>INDICE</hint>
</enigma>
  • TITRE correspond au titre précisé plus haut.
  • RÉPONSE est la réponse attendue.
  • INDICE est un indice donné au joueur en cas de besoin.

Méthodes d'EnigmaPanel

Toutes ces méthodes sont virtual et peuvent être redéfinies grâce à override (exception faite du constructeur, bien entendu).

EnigmaPanel()

Constructeur par défaut, fixe la taille de l'énigme à 800x600 et la couleur de fond à blanc. Il est possible de modifier ces deux valeurs.

void PressKey(object sender, KeyEventArgs e)

Appelé lorsque l'utilisateur appuie sur une touche du clavier.

void ReleaseKey(object sender, KeyEventArgs e)

Appelé lorsque l'utilisateur relâche une touche du clavier.

void Load()

Appelé lorsque l'application affiche l'énigme à l'écran. C'est ici qu'on lancera un Timer, par exemple.

void Unload()

Appelé lorsque l'application affiche une autre énigme. Ici, on arrêtera tout ce qu'on a lancé dans Load().