Il est tout à fait possible de ne prendre en considération que LA bonne réponse parmi une longue liste de propositions..
Cette fois-ci notre gardien a besoin d'une formule magique pour s'esquiver,
5 réponses sont proposées, une seule est valable, et on a droit qu'à une erreur..
En effet si le joueur se trompe de formule deux fois, l'obstacle se transforme en mur, immuable !.
On pose donc une
property “NbOfFalse”, qui va s'incrémenter de 1 à chaque mauvaise réponse,
si sa valeur arrive à 2 on élimine l'obstacle et on pose un mur à la place.
unit AAA;
uses
FunLabyBase;
components
Guard: TGuard;
obstacle TGuard
name 'Gardien';
image 'Characters/Angel';
property NbOfFalse: Integer;
on Pushing do
var
Selected: Integer;
begin
inherited;
if not KeyPressed then
Exit;
Selected := Player.ShowSelectionMsg('Connais-tu la formule magique pour passer ?',['Oui', 'Non']);
if Selected = 0 then
begin
Selected := Player.ShowSelectionMsg('Quelle est la formule ?',
['Abracadabra','Barbatruc','Machin chose','Sésame, ouvre toi','Youpi youpla']);
if Selected = 3 then
begin
Player.ShowMessage('C''est bon, tu peux passer.');
Square.Obstacle := nil;
end else
begin
Player.ShowMessage('Désolé, ce n''est pas la bonne formule !');
NbOfFalse := NbOfFalse + 1;
if NbOfFalse = 2 then
begin
Player.ShowMessage('Cela fait 2 fois que tu te trompes de formule,'+#10+
'Désolé, tu ne pourras plus passer par ici !!');
Square.Obstacle := nil;
Square.Field := Wall;
NbOfFalse := 0;
end;
end;
end;
if Selected = 1 then
Exit;
end;
end;
end.
Comme on peut le constater, ici on ne prend en compte que la bonne réponse (
if Selected = 3),
c'est l'instruction
end else qui permet de décrire ce qui se passe si la valeur de Selected est différente de 3.
La ligne
NbOfFalse := 0 permet de réinitialiser le compteur de mauvaise réponse,
au cas où un autre gardien se trouve sur le chemin du joueur.