Forum FunLabyrinthe

Le jeu de labyrinthe fun et gratuit - Retour au site

  • Vous n'êtes pas connecté.

#1 déc. 30, 2011 17:35:52

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

multi-cartes

Ok, merci pour les infos..
Voici mon bout de code concernant VK_BACK (on ne rit pas !) :

plugin TRetourCasePlugin
hint 'Retour début de case';
on PressKey do
begin
if Key = VK_BACK then
begin
CompartmentDestination(Player);
Handled := True;
end;
end;
end;
Et dans ce cas il m'indique “identificateur VK_BACK non déclaré”, si j'ajoute en début d'unité “VK_BACK : TVK_BACK” il annonce alors : “Types incompatibles : Word et TVK_BACK”..
J'ai aussi essayé “if Key = Ord (VK_BACK) then”…
Bref, je pense être complètement à côté de la plaque sur cette question !

NB: Ceci n'est pas primordial pour mon projet, c'est histoire d'assouvir ma curiosité et de mieux cerner la chose..


(°!°) DerF

Modifié DerF_44 (déc. 30, 2011 17:38:09)

Hors-ligne

#2 déc. 30, 2011 20:13:56

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

multi-cartes

Ton code est bon. Je crois que tu dois juste ajouter l'unité Windows dans les uses.


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#3 déc. 30, 2011 20:49:15

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

multi-cartes


Tout à fait !!.
En ajoutant Windows dans les uses le code

if Key = VK_BACK then
fonctionne parfaitement !.
Merci !.


(°!°) DerF

Hors-ligne

#4 déc. 31, 2011 13:22:33

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

multi-cartes

Bon, je galère un peu avec la manière de forcer le choix d'une carte de destination :

Dest.Map := Master.Maps['MainMap'];
Il me dit "Identificateur Master non déclaré“ et lorsque j'écris ”Master : TMaster;“ ou bien ”Master := Player.Master;" FunLabyrinthe cesse de fonctionner !!?.
Une idée ?..


(°!°) DerF

Modifié DerF_44 (déc. 31, 2011 13:23:11)

Hors-ligne

#5 déc. 31, 2011 15:32:49

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

multi-cartes

Tu peux mettre le code qui entoure aussi ?


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#6 déc. 31, 2011 17:04:22

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

multi-cartes

Ok, je m'attendais un peu à ça !… C'est un peu compliqué (l'unité en question comporte 800 lignes) mais je vais essayer d'être simple (tout en gardant le sujet de mon projet confidentiel pour + de surprise lorsqu'il sera opérationnel !) …
Bon, alors… Voici ce que j'ai et qui fonctionne :

procedure CompartmentDestination(Player: TPlayer);
begin
if Player.Tag = 1 then
Player.MoveTo(Point3D(7,42,1));
if Player.Tag = 2 then
Player.MoveTo(Point3D(12,42,1));
if Player.Tag = 3 then
//..................................................................etc
end;

Et grâce au code suivant :

plugin TRetourCasePlugin
hint 'Revenir en début de case (Touche Back Space)';
on PressKey do
begin
if Key = VK_BACK then
begin
CompartmentDestination(Player);
Handled := True;
end;
end;
end;
Le joueur a la possibilité de revenir à un point de départ si il s'est un peu trop perdu… Cela fonctionne parfaitement si il n'a pas quitté la MainMap dans le cas contraire niet !.. Et donc je voudrais modifier ma procédure avec quelque chose dans le genre de :

procedure CompartmentDestination(Player: TPlayer);
var
Dest: TQualifiedPos;

begin
Dest.Map := Master.Maps['MainMap'];

if Player.Tag = 1 then
Dest.Position := Point3D(7,42,1);
if Player.Tag = 2 then
Dest.Position := Point3D(12,42,1);
if Player.Tag = 3 then
//...............................................................etc

Player.MoveTo(Dest);
end;




(°!°) DerF

Hors-ligne

#7 jan. 1, 2012 05:22:28

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

multi-cartes

OK alors écris simplement :
Dest.Map := Player.Master.Maps['MainMap'];
Aussi, à la place de tous les if, tu peux faire un case :
case Player.Tag of
1: Dest.Position := Point3D(7, 42, 1);
2: Dest.Position := Point3D(12, 42, 1);
// etc.
end;


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#8 jan. 1, 2012 11:44:13

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

multi-cartes

Bon, voici où j'en suis :

procedure CompartmentDestination(Player: TPlayer);
var
Dest: TQualifiedPos;

begin
Dest.Map := Player.Master.Maps['MainMap'];

case Player.Tag of
1: Dest.Position := Point3D(7, 42, 1);
2: Dest.Position := Point3D(12, 42, 1);
//..........................................................................etc
end;
end;
Et il me dit (à propos de la ligne "Dest.Map := Player.Master.Maps;"
Types incompatibles : Integer et string (curseur entre [ et ‘)
et Valeur requise (curseur devant le P de Player)
Peut-être je n’ai pas capté le code et qu'il n'est pas bon ?..



(°!°) DerF

Hors-ligne

#9 jan. 1, 2012 14:07:16

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

multi-cartes

Fausse alerte !!.

En enlevant le “s” de Maps :

Dest.Map := Player.Master.Map['MainMap'];

Tout fonctionne correctement !. Nickel !!!
C'est cool car ce problème étant résolu, je vais pouvoir continuer sereinement mon projet !.
Merci beaucoup sjrd !.

(Et au passage, je te souhaite une très bonne année 2012 !. )


(°!°) DerF

Hors-ligne

#10 jan. 1, 2012 14:23:57

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

multi-cartes

Bonne année 2012 également !


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

Pied de page

Modération

Powered by DjangoBB

Lo-Fi Version