FunLabyrinthe

Objets et actions

Maintenant que les bases sont posées, cette rubrique montre les spécificités liées aux objets, et donc à l'utilisation d'actions. Un objet se déclare avec le mot-clef object.

object TBronzeKeys
  name 'Clef de bronze';
  image 'Objects/BronzeKey';
end;

Création d'un nouveau type d'action

En SimpleSquares, on peut marquer n'importe quel nom d'action, sans contrôle. Le FunDelphi, quant à lui, requiert que les actions soient déclarées. En fait, les SimpleSquares déclarent automatiquement les actions.

Le mot-clef actions introduit une liste de noms d'actions à déclarer, séparés par des virgules.

uses
  FunLabyBase;

actions
  OpenBronzeLock;

components

Les actions ont pour convention de nommage d'être des groupes verbaux, avec le verbe à l'infinitif. L'introduction de cette nouvelle action, OpenBronzeLock, va nous permettre de l'utiliser plus loin. Tout comme les composants, vous pouvez récupérer les actions déclarées dans d'autres unités en utilisant la clause uses.

Les actions standard GoOnWater, OpenSilverLock et OpenGoldenLock sont déclarées dans l'unité FunLabyBase.

2

Spécifier qu'un objet peut effectuer une action

À présent que nous avons une classe d'objet et une action, on peut spécifier que la classe d'objet TBronzeKeys permet au joueur, s'il en a, d'effectuer l'action OpenBronzeLock.

object TBronzeKeys
  name 'Clef de bronze';
  image 'Objects/BronzeKey';

  action OpenBronzeLock;
end;

Sous cette forme, dès que le joueur aura une clef de bronze, il pourra ouvrir des verrous en bronze... Et ne perdra pas sa clef ! Pour qu'il perde sa clef, on peut ajouter une clause then :

object TBronzeKeys
  name 'Clef de bronze';
  image 'Objects/BronzeKey';

  action OpenBronzeLock then
    Player discards 1 Self;
end;

Self signifie soi-même en anglais. Il s'agit donc de l'objet de la classe TBronzeKeys que le joueur est en train d'utiliser pour ouvrir le verrou en bronze.

3

Finalement, si vous voulez que le joueur ait besoin de deux clefs de bronze pour ouvrir un verrou en bronze, vous pouvez ajouter une clause if.

object TBronzeKeys
  name 'Clef de bronze';
  image 'Objects/BronzeKey';

  action OpenBronzeLock if Player has 2 Self then
    Player discards 1 Self;
end;

Le mot-clef has peut optionnellement être suivi de at least, at most, more than, less than ou exactly, ce qui signifie que le joueur doit avoir respectivement au moins, au plus, plus que, moins que, ou exactement le nombre d'objets indiqués. Par défaut, at least est utilisé.

2

Créer le composant objet et l'outil correspondant

Après avoir déclaré la classe d'objet, il ne faut pas oublier de créer le composant objet de cette classe. De plus, il faut créer un outil permettant de ramasser cet objet. Les ID d'objets sont généralement mis au pluriel, la forme singulière étant réservée à l'outil correspondant. Si les deux formes sont homographes, on ajoute un suffixe Tool pour l'outil.

Il n'y a pas besoin de créer de nouvelle classe pour l'outil. Vous allez découvrir pour la première fois une classe réutilisable pour créer plusieurs composants : TObjectTool. C'est une classe d'outil "automatique", qui ramasse un objet et affiche un message. Pour spécifier quel est l'objet et quel est l'outil, on utilise des paramètres :

components
  BronzeKeys: TBronzeKeys;
  BronzeKey: TObjectTool
    ObjectDef: BronzeKeys;
    FindMessage: 'Tu as trouvé une clef de bronze. Tu peux détruire un bloc '+
      'en bronze.';
  end;
Aller à la page
(C) 2000-2011 Sébastien Doeraene