Le jeu de labyrinthe fun et gratuit - Retour au site
ObjectDef.Count[Player] := 0;
Square.Tool := Tool;
Hors-ligne
if (Player has at least 1 ObjectDef) and (Player.Direction = diNorth) then
begin
bla bla "pas possible de trimbaler ...."
ObjectDef.Count[Player] := 0;
Square.Tool := Tool;
property Direction : TDirection;
..
..
..
if (Player has at least 1 ObjectDef) and (Player.Direction = Direction) then
Hors-ligne
Hors-ligne
Modifié DerF_44 (déc. 8, 2011 16:05:50)
Hors-ligne
DerF_44À rien. Juste que si on en a besoin pour quelque chose, ben il est là.
À quoi servent les property “Tag” de tous les composants !?…
DerF_44Oui bonne idée. Mais en fait il y a les attributs du joueur qui sont faits pour ça. Une fois que tu as fait :
Je me suis amusé à me servir du Tag du joueur en m'en servant un peu comme points de vie, enfin plutôt en points de mort !.. Lorsque le joueur rencontre une araignée (du genre 30 Kilos la bestiole quoi !) et qu'il ne peut la détruire, son Tag augmente de 1 point à cause d'une piqûre que lui inflige la bête !… Lorsque le Tag est à 6 le joueur est averti que ça commence à craindre grave, et à 10, Player is dead = Game Over !..
Alors je commence à imaginer une unité “LifePoints” plugin sur le joueur qui débuterait avec un capital de 100 pts et qui perdrait des points en cas d'actions difficiles ou ratées… À 0 pts = le joueur perd… (of course, sur son chemin il pourrait trouver une potion lui faisant augmenter son capital pts de vie !)
attributes
LifePoints;
Player.LifePoints
DerF_44Pourquoi pas, mais une property dédiée est toujours mieux.
Et mon idée serait d'utiliser les Tag des composants qui détermineraient le nombre de points à soustraire de celui du joueur !… Est-ce possible ?… Les Tag sont de type integer ?.. (un nombre entier positif ou négatif ?.. et donc si on a un Tag de -10 sur un outil, le joueur augmentera son capital vie de 10 ..?)
DerF_44Oui. FunLabyrinthe est très malin pour tout ce qui est sauvegarde des choses.
Et juste pour être certain : Si j'attribue (pendant l'édition d'un projet) à une épée un Tag de 3, lorsque le mode jeu commence cette valeur sera conservée ?!… (même après exportation du projet ?.)..
DerF_44Techniquement, oui, c'est possible, puisqu'on peut attendre la frappe au clavier de n'importe quelle touche, et savoir laquelle c'est. Mais il n'y a rien de “tout fait” qui tienne en une commande. Il faudrait écrire une unité tout à fait non triviale pour pouvoir le faire. Je peux mettre ça dans ma todo list.
Un autre “truc” me taraude l'esprit depuis quelques jours : Y'a t-il moyen de faire entrer un string de la part du joueur ??… (l'idée initiale est une porte à code alphanumérique, mais j'ai d'autres idées !… )
Hors-ligne
unit LifePoints;
uses
FunLabyBase, TestLifePoints, FunLabyGraphics;
attributes
LifePoints;
components
BadSpider : TBadSpider;
obstacle TBadSpider
name 'araignée mortelle';
image 'araignee';
property LostLifePoints : Integer;
on Pushing do
begin
if Player can Marteler then
begin
Square.Obstacle := nil;
Exit;
end else
Player.LifePoints := Player.LifePoints + LostLifePoints; // (valeur LostLifePoints de l'araignée = -10)
Player.ShowMessage (Format(
'Oups !.. %d points de vie !.. ',[LostLifePoints]));
Player.ShowMessage (Format(
'Il te reste %d points de vie..',[Player.LifePoints]));
end;
end;
end.
Modifié DerF_44 (déc. 9, 2011 01:25:49)
Hors-ligne
procedure AddLifePoints(Player: TPlayer; Amount: Integer);
begin
Player.LifePoints := Player.LifePoints + LostLifePoints;
Player.ShowMessage (Format(
'Oups !.. %d points de vie !.. ',[Amount]));
Player.ShowMessage (Format(
'Il te reste %d points de vie..',[Player.LifePoints]));
end;
end else
AddLifePoints(Player, LostLifePoints);
end;
components
LifePoints: TLifePoints;
object TLifePoints
name 'Points de vie';
image 'BodyParts/Heart';
end;
Player.LifePoints
Player discards 3 LifePoints;
Hors-ligne
Hors-ligne
end else
Player.LifePoints := Player.LifePoints + LostLifePoints;
Player.ShowMessage (Format(
'Oups !.. %d points de vie !.. ',[LostLifePoints]));
Player.ShowMessage (Format(
'Il te reste %d points de vie..',[Player.LifePoints]));
Cancel;
end;
Hors-ligne
unit TestLifePointsCounter;
uses
FunLabyBase, TLifePointsCounter;
components
BadSpider : TBadSpider;
LifePoints: TLifePoints;
object TLifePoints
name 'Points de vie';
image 'BodyParts/Heart';
end;
obstacle TBadSpider
name 'araignée mortelle';
image 'araignee';
property LostLifePoints : Integer;
on Pushing do
begin
if Player can Marteler then
begin
Square.Obstacle := nil;
Exit;
end else
Player.LifePoints := Player.LifePoints + LostLifePoints;
Player.ShowMessage (Format(
'Oups !.. %d points de vie !.. ',[LostLifePoints]));
Player.ShowMessage (Format(
'Il te reste %d points de vie..',[Player.LifePoints]));
Cancel;
end;
end;
end.
Modifié DerF_44 (déc. 10, 2011 12:24:41)
Hors-ligne