DerF_44
Ok, et si je veux poser une clé d'or à la place de MonEffet !!??..
C'est pas (encore) très clair ces histoires de ObjectDef ou ObjectTool !..
DerF_44
Est-ce correct ???.. Et si j'ai plusieurs lignes d'instructions dois-je poser “begin“ et ”end else” ?!.
Non ce n'est pas correct. Il ne faut pas de ; avant le
else. Et il n'y a pas de end; à la fin. Les end vont avec les begin.
Donc ce doit être :
if Player.Tag = 666 then
Player.Lose
else
Player.ShowMessage('Tu es vivant !');
En fait les
then et
else doivent être suivis d'exactement une instruction. Tu peux grouper plusieurs instructions (ou une seule d'ailleurs) en une avec
begin..end. Ce qui te permet de faire :
if Player.Tag = 666 then
begin
Player.Lose;
end else
begin
Player.ShowMessage('Tu es vivant !');
end;
Et alors d'ajouter d'autres choses si tu veux. Note que ; est réapparu à la fin de Lose, car là où il n'est pas c'est entre le
end et le
else.
Dans ce nouveau code, l'unique instruction du
then est :
et celle du
else est :
begin
Player.ShowMessage('Tu es vivant !');
end
DerF_44
J'ai une salle carrée avec 4 angles…(si si !) Je voudrais poser une clé d'or dans un seul des 4 angles de manière aléatoire !!!!
Et je ne sais comment m'y prendre !.. Dois-je contruire un plugin qui gèrera une property “EmplacementDeLaCle” ?.. Un effet ?.. des var ?????
Dans le cas d'un plugin, et de sa property EmplacementDeLaCle := Random(4)+1 j'aurais un truc du genre :
Une
var avec un Random est le plus approprié. Pour chaîner des
if tu mets
else if à partir du second :
var
EmplacementDeLaCle: Integer;
[...]
EmplacementDeLaCle := Random(4) + 1;
if EmplacementDeLaCle = 1 then
Master.Map['MaCartePerso'].Map[Point3D(1, 1, 1)].Tool := GoldenKey
else if EmplacementDeLaCle = 2 then
Master.Map['MaCartePerso'].Map[Point3D(10, 1, 1)].Tool := GoldenKey
else if EmplacementDeLaCle = 3 then
Master.Map['MaCartePerso'].Map[Point3D(1, 10, 1)].Tool := GoldenKey
else
Master.Map['MaCartePerso'].Map[Point3D(10, 10, 1)].Tool := GoldenKey;
Note l'absence de ; avant chaque
else, mais il y en a bien un à la toute fin.
Dans ce cas l'unique instruction du
else de
if EmplacementDeLaCle = 2 then est tout ceci :
if EmplacementDeLaCle = 3 then
Master.Map['MaCartePerso'].Map[Point3D(1, 10, 1)].Tool := GoldenKey
else
Master.Map['MaCartePerso'].Map[Point3D(10, 10, 1)].Tool := GoldenKey
En l'occurrence, tu peux simplifier grandement ceci avec un
case :
case EmplacementDeLaCle of
1: Master.Map['MaCartePerso'].Map[Point3D(1, 1, 1)].Tool := GoldenKey;
2: Master.Map['MaCartePerso'].Map[Point3D(10, 1, 1)].Tool := GoldenKey;
3: Master.Map['MaCartePerso'].Map[Point3D(1, 10, 1)].Tool := GoldenKey;
4: Master.Map['MaCartePerso'].Map[Point3D(10, 10, 1)].Tool := GoldenKey;
end;