Afin d'aller plus loin dans la création de labyrinthes, et notamment pour créer ses propres cases et ses propres effets, il est nécessaire de comprendre les concepts essentiels qui régissent FunLabyrinthe.
Maître et composants
FunLabyrinthe est organisé en une série de composants de tous genres. En général, toute "chose" qui a une existence dans FunLabyrinthe est un composant. Le joueur, l'herbe, une carte, un objet, sont autant d'exemples de composants.
Tous les composants d'un labyrinthe sont reliés à un maître. Le maître (master) est l'autorité suprême dans FunLabyrinthe. Il connaît tous ses composants, et tous ses composants le connaissent. Afin de pouvoir reconnaître un composant d'un autre, chaque composant a un ID (prononcez idé), c'est-à-dire un identifiant.
Les ID de composants respectent un format particulier : ils sont constitués uniquement de lettres non accentuées et de chiffres, et doivent commencer par une lettre. Des exemples valides sont "ComponentID", "Ciph3r" ou "CeTiDbizarre". Des exemples invalides sont "Bonjour monsieur", "123" ou "Erroné", respectivement à cause de l'espace, du chiffre au début et de l'accent sur le e.
Certains composants sont "visuels", c'est-à-dire qu'ils peuvent être dessinés à l'écran. Le joueur et les composantes de cases sont des composants visuels. D'autres sont non visuels, comme les plugins attachés aux joueurs (cfr. infra).
Actions
Certaines cases doivent tester si le joueur est capable de faire une chose ou l'autre. Par exemple, l'eau doit tester s'il est capable d'aller sur l'eau. Les blocs doivent tester s'il est capable d'ouvrir une serrure de la couleur appropriée. Ces phénomènes sont connus sous le terme d'actions.
En lui-même, le joueur ne sait pas faire d'actions. Mais les objets qu'il transporte, ou les plugins qui lui sont raccordés, peuvent l'aider à faire des actions. L'objet clef d'or, par exemple, permet au joueur d'effectuer l'action d'ouvrir une serrure en or, s'il a au moins une clef.
Les actions sont représentées par leur nom, qui suit les mêmes règles de format que les ID de composants (cfr. supra).
Il existe trois actions standard dans FunLabyrinthe :
- OpenSilverLock : Ouvrir un verrou en argent (exemple : le bloc en argent)
- OpenGoldenLock : Ouvrir un verrou en or (exemple : le bloc en or)
- GoOnWater : Aller sur l'eau
En plus de ces trois actions standard, vous pouvez bien entendu créer les vôtres.
Certaines actions acceptent un paramètre, un nombre entier qui précise leur signification. Mais ceci dépasse le cadre de cette section introductive.
Les différentes classes de composants
Il y a beaucoup de types de composants différents. On dit qu'il y a des classes de composants. Les classes ont des noms qui commencent par un T, et qui respectent aussi le même format que les ID de composants. Les composantes de case sont un exemple de classe de composant (TSquareComponent).
Il y a des sous-classes d'autres classes ; tous les composants qui appartiennent à une sous-classe appartiennent aussi à la classe plus large. Ainsi, la classe des terrains (TField) est-elle une sous-classe de la classe des composantes de case. En effet, tous les terrains sont des composantes de case.
Selon la classe d'un composant, l'inspecteur d'objets affichera une liste différente de propriétés. C'est ainsi que le joueur n'a pas la même liste de propriétés que le passage secret.
Pour une description plus détaillée, consultez la rubrique Grandes classes de composants.
Plugins du joueur
S'il est possible de créer de nombreuses cases supplémentaires, il n'est pas possible de créer de nouveaux joueurs. Comment alors ajouter des comportements supplémentaires au joueur, comme répondre à l'appui sur une touche du clavier ? C'est à cette problématique que répondent les plugins.
Les plugins sont une des classes de composants (TPlugin). Le joueur retient une liste des plugins qui lui sont attachés. À chaque fois que le joueur doit effectuer une action (appuyer sur une touche, se déplacer, etc.), il demande à tous ses plugins s'ils prennent cette action en charge.
Dans l'inspecteur d'objets, on peut choisir les plugins qui sont attachés au joueur dès le début du jeu. Il suffit de positionner à True la propriété dont le nom est l'ID d'un plugin pour que ce plugin soit rattaché au joueur.
Parmi les choses que peuvent faire les plugins, on trouve :
- Dessiner quelque chose en-dessous ou au-dessus du joueur (exemple : le plugin de la bouée dessine la bouée sous le joueur) ;
- Dessiner sur la vue du joueur (exemple : le plugin d'affichage de message dessine le cadre du message sur la vue du joueur) ;
- Réagir quand le joueur veut se déplacer d'une case à une autre, ou s'est déplacé d'une case à une autre ;
- Aider le joueur à réaliser une action, au même titre qu'un objet ;
- Réagir lorsque le joueur appuie sur une touche du clavier.
En fait, les plugins peuvent modifier à peu près tous les comportements du joueur.
Mode du joueur
Si les plugins peuvent modifier tous les aspects du joueur, le mode est là pour donner une base de fonctionnement au joueur.
Au contraire des plugins, le joueur ne peut avoir qu'un seul mode actif à la fois. Par défaut, le mode est TLabyrinthPlayerMode, c'est-à-dire le mode labyrinthe. Dans le mode labyrinthe, la vue du joueur est essentiellement déterminée par les cases de la zone courante. Et lorsque le joueur appuie sur une touche directionnelle, il se déplace.
"Mais, si vous dites que le mode labyrinthe est par défaut, cela signifie-t-il que FunLabyrinthe peut ne plus être un labyrinthe, si on le remplace ?"
Eh bien oui, c'est possible ! Si vous créez un autre mode et l'affectez au joueur, il est parfaitement possible que FunLabyrinthe ne ressemble plus du tout à un jeu de labyrinthe. Ceci n'est toutefois possible qu'avec des sources Delphi, et n'est pas une tâche simple, bien au contraire.
Timers
Les timers (prononcez taïmerz) sont des événements qui se déclenchent après un certain temps. Le maître retient une série de timers programmés. Lorsqu'ils arrivent à expiration, les événements sont déclenchés automatiquement.
Les timers peuvent donc servir à programmer des événements qui réagissent à l'écoulement du temps.