Rechercher - Liste des utilisateurs
Version complète : Débutants
Accueil » FunDelphi » Débutants
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
sjrd
DerF_44
J'imagine que la variable “Origin” faisait partie d'un brouillon mental !?…
Euh oui ^^ En effet.
DerF_44
Grrr… Une broutille : Je n'arrive plus à remettre la main dessus et je ne l'ai pas (encore) dans mes notes perso :
Comment tester si le joueur est sur une carte précise !?..
Ou plus exactement je voudrais une condition qui est vraie si le joueur N'EST PAS sur une carte précise, genre :
if Player.Map <> Master.Map['MyMap'] then

Merci !
sjrd
Ben c'est ça
DerF_44
Ben c'est bizarre : Je n'ai pas d'erreur de compilation, mais lorsque je lance le jeu et que ce code est lu, j'obtiens une fenêtre “EAccessViolation” avec le message suivant :

Access violation at address 00201CE0 in module ‘FunLabyCore.bpl’.
Read of address 0004462A


Voici le code où j'ai tenté d'ajouter ma ligne :
procedure InfoAboutLife(Player: TPlayer);
var
I: Integer;
Master: TMaster;
begin
if (Player.Compartment <> 0) then
// if Player.Map <> Master.Map['GameBoardMap'] then //---Ligne que je voulais mettre à la place de la précédente !
begin
I := 0;
while I < 3 do
begin
Player.Hide;
Sleep(100);
Player.Show;
Sleep(100);
Inc(I);
end;
end;

Player.Color := $FF0000FF;
Master := Player.Master;

if (Player.LifePts <= 0) and (Player.Compartment <> 58) and (Player.Compartment <> 31) then
begin
Player.LifePts := 0;
Player.Lose;
Player.Color := $FFFFF00;
Player.ShowMessage('Tu es mort !');
end else
begin
if (Player.LifePts < 20) and (Player.LifePts >= 10) then
begin
Player.Color := $FFFF8000;
end;
if (Player.LifePts < 10) and (Player.LifePts >0) then
begin
Player.Color := $FFFF0000;
end;
end;
end;
sjrd
Oui c'est parce qu'il ne suffit pas de déclarer une variable locale Master comme ça pour pouvoir l'utiliser. Il faut l'initialiser, quand même ^^ Ajoute ceci au début de ta procédure :
Master := Player.Master;
DerF_44
Argh !.. J'ai dû zapper une ligne lors de mes Copier/Coller !!
(j'en suis à la 5ème complète réécriture de la “mécanique générale” de mon projet ! )

Je t'avoue que ces histoires de Master, Player.Master et autres déclinaisons du genre,
sont très très loin d'être assimilées !!! Cela demeure très flou pour moi !
J'arrive (à peu près) à me rendre compte de l'utilité d'un Master.Map, ou d'un Master.Tool('LifePotion1'), voire d'un Master.Component('MovableBlock10')
À la rigueur, je pourrais oser imaginer “comprendre” un Master.Player, Mais l'inverse, Player.Master, je ne capte pas du tout !!

Euh, au fait, c'est ok maintenant pour ma procédure “InfoAboutLife”,

merci !




NB: Volontairement, les crochets " [ “ ont été remplacés par des parenthèses ” ( "
DerF_44
Balaise : Lorsque j'étais étudiant, il y a des siècles,
je faisais mumuse avec une calculatrice graphique programmable (TI-82) avec laquelle j'élaborais des…. Labyrinthes !!!
(Tu imagines ma joie lorsque j'ai découvert FunLabyrinthe !!!!!)
Sur ces machines archaïques je pouvais générer une List(x) de 99 valeurs,
et si j'appelais dans mon programme List(33) il récupérait la 33ème valeur de la liste….
Évidemment, avec une petite boucle du genre List(x+I) je pouvais explorer une série de valeurs !….

Alors, ma question : Y'aurait-il moyen, en FunDelphi de faire un truc dans le genre !!!???

Je t'expose mon idée :
Dans mon projet le joueur va visiter plusieurs cases du plateau de jeu (Player.Compartment), et j'aimerais bien mémoriser lesquelles !!!!
Obtenir une sorte de liste où les différentes valeurs des Player.Compartment soient stockées !…
Comme il y a une case qui envoie le joueur sur une case aléatoire,
mon idée serait d'envoyer le joueur sur une case au hasard, mais pas une case qu'il a déjà visitée !!.

Je tiens à préciser que cette option est loin d'être indispensable à mon projet, et, il me semble,
je dois être capable de bricoler un truc “pas beau” qui remplirait cette fonction..
Toutefois, s'il existe un moyen d'utiliser une liste de valeurs, je serais assez curieux de savoir comment !..
DerF_44
Je me doutais que j'allais trouver un truc “pas beau”, mais de ce genre là et aussi simple, ça mérite le détour :

Donc, facile : Sur une Map j'ai une rangée-test remplie d'herbe…
À chaque déplacement du joueur sur le plateau de jeu on pose un mur sur la rangée :
Master.Map['SquareNineMap'].Map[Player.Compartment, 0, 0].Field := Wall;

Si on tombe sur la case qui repositionne le joueur sur une case aléatoire sauf celles qu'il a déjà visitées,
suffit de tester la rangée pour ne pas tomber sur un mur !!!
Repeat
Player.Compartment := Random(62) + 1;
until Master.Map['SquareNineMap'].Map[Player.Compartment, 0, 0].Field = Grass;

Étonnant-non !?..
sjrd
Lol ^^ Oui pas mal, compte tenu de ce que tu sais de FunDelphi

Il faudrait utiliser un tableau (array) de Delphi, mais je crois que je n'ai pas laisser cette possibilité en FunDelphi. Peut-être pour la prochaine version
DerF_44
Oui, en glanant quelques infos sur le Net, j'ai vu ce mot-clé, array,
et comme il ne s'écrivait pas en bleu au sein d'une unité .fnd, je me suis dit que c'était pas bon signe !..
J'ai (un peu) regardé comment étaient foutus quelques unités .pas mais ça ne m'a guère inspiré pour tenter d'en créer une moi-même !!!

Pouvoir utiliser des tableaux en FunDelphi lors d'une prochaine version : Je ne suis pas contre !!!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB