Forum FunLabyrinthe

Le jeu de labyrinthe fun et gratuit - Retour au site

  • Vous n'êtes pas connecté.

#1 déc. 1, 2012 12:24:50

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Débutants

DerF_44
J'imagine que la variable “Origin” faisait partie d'un brouillon mental !?…
Euh oui ^^ En effet.


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#2 déc. 1, 2012 17:25:22

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

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 !


(°!°) DerF

Hors-ligne

#3 déc. 1, 2012 18:51:30

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Débutants

Ben c'est ça


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#4 déc. 1, 2012 19:58:42

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

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;


(°!°) DerF

Modifié DerF_44 (déc. 1, 2012 20:23:32)

Hors-ligne

#5 déc. 1, 2012 22:31:26

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Débutants

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;


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#6 déc. 2, 2012 00:45:14

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

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

Modifié DerF_44 (déc. 2, 2012 00:51:32)

Hors-ligne

#7 déc. 3, 2012 11:26:16

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

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

Modifié DerF_44 (déc. 3, 2012 11:28:32)

Hors-ligne

#8 déc. 3, 2012 21:44:25

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

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 !?..


(°!°) DerF

Modifié DerF_44 (déc. 3, 2012 21:52:26)

Hors-ligne

#9 déc. 4, 2012 11:11:52

sjrd
De : Belgique
Enregistré : 2010-04-11
Messages : 481
Réputation: +  14  -
Profil   Envoyer un courriel  

Débutants

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


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#10 déc. 4, 2012 13:45:49

DerF_44
De : Nantes
Enregistré : 2011-10-24
Messages : 271
Réputation: +  0  -
Profil   Envoyer un courriel  

Débutants

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 !!!


(°!°) DerF

Hors-ligne

Pied de page

Modération

Powered by DjangoBB

Lo-Fi Version