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
DerF_44
Ah… Ok..
En fait je ne saisis pas trop la différence entre :
until (Map53[Point3D(Esc53X, Esc53Y, 1)].Field is TGround);
Et :
until Map53[Point3D(Esc53X, Esc53Y, 1)].Field = Grass;

sjrd
Le second n'est valable que si c'est exactement l'unique composant qui a l'ID Grass.
Le premier est valable pour n'importe quel terrain qui hérite de TGround - et donc entre autres les copies éventuelles de l'herbe.
DerF_44
Oui oui, ok !..
C'est quand même assez abstrait et mystérieux pour moi ces histoires de classes et d'héritages !
(Exemple lorsque j'ai créé “TIndestructibleWall” où le joueur pouvait se déplacer dessus avant que je ne rajoute “(TWall)” !.. Cela signifie que par défaut tous les terrains créés sont praticables !?..)
Donc on a Grass(TGround), Wall(TWall), Water(TWater), Hole(THole) etc..??
Si je crée un terrain MonTerrain(TWater) je pourrais le pratiquer uniquement avec une bouée ou une barque !?.
En fait ma question : Mais quelles sont donc les “grandes” classes de base !!???

Par exemple dans mon histoire de poser un escalier à un endroit aléatoire mais, évidemment pas dans l'eau ou dans un mur, pourrais-je spécifier n'importe où sur un terrain praticable (créé en .ssq), englober tous les terrains où le joueur est autorisé à venir ?.. Ces terrains proviennent-ils d'une même classe ??..



(Apparemment ceci est le 1000 ème message !!.. J'ai gagné quelque chose ?!.. Je veux bien une notice de 800 pages sur le FunDelphi !!!!!!!!! )
sjrd
Les terrains sont par défaut “praticables” (bien qu'on ne puisse prendre appui sur eux avec la planche).
DerF_44
Si je crée un terrain MonTerrain(TWater) je pourrais le pratiquer uniquement avec une bouée ou une barque !?.
Oui.
DerF_44
En fait ma question : Mais quelles sont donc les “grandes” classes de base !!???
Pour les terrains il n'y a que ceci (dans FunLabyBase) :
TGround ajoute la possibilité d'utiliser la planche
TWall empêche de venir dessus
TWater et THole sont les classes de l'eau et du trou respectivement.
TSky pour le ciel
TOutside est le terrain blanc qui se trouve par défaut à l'extérieur du labyrinthe.

Sinon en général tu peux trouver le code de FunLabyBase ici [github.com]. Si tu parcours les fichiers .pas dans ce dossier, tu pourras au moins repérer toutes les classes qui y sont définies. Elles sont toujours surmontées d'un petit commentaire qui dit à quoi ça correspond dans le jeu.
DerF_44
Ok, Merci sjrd !
Avec le lien de github, en ayant jeté un petit coup d'œil, je me rends un peu plus compte de ce que j'imaginais déjà : C'est un boulot de titan qui a été nécessaire pour concevoir ce fantastique logiciel qu'est FunLabyrinthe !!!!!!
En dehors de cette constatation, effectivement, il est possible que je puisse y découvrir quelques pistes ou trouvailles intéressantes !!
DerF_44
Bon, encore un truc tout bête que je cherche sur le Net sans résultats probants :
Je voudrais obtenir avec la fonction Random un nombre compris entre 39 et 55 (les 2 limites incluses)..

MachinTruc := Random(39)+16;
Est-ce correct !?…
Merci d'y porter attention.
sjrd
Pour obtenir un nombre aléatoire entre A et B inclus, la formule générale est
Random(B-A+1) + A
donc ici c'est
Random(55-39+1) + 39
DerF_44
Hoùùlàà là !!!?…
J'ai bien fait de te demander !!!!!!!

Merci beaucoup !!

DerF_44
Encore (encore !) besoin d'une petite précision !..
À propos de la recherche d'un couple (X, Y) aléatoire afin d'y poser une clé :

repeat
CleX := Random(36-20+1)+20;
CleY := Random(74-58+1)+58;
until Map[Point3D(CleX, CleY, 0)].Field is TGround;

Map[Point3D(CleX, CleY, 0)].Tool := WhiteKeyTool;
Je voudrais savoir si dans la description Field is TGround il s'agit bien d'un terrain (hérité de Grass, ok) vide de tout obstacles, effets, outils !!????.

Merci.

sjrd
Alors le mieux est de faire d'abord une petite fonction annexe :
function IsValidForKey(Square: TSquare): Boolean private;
begin
Result := (Square.Field is TGround) and (Square.Effect = nil) and
(Square.Tool = nil) and (Square.Obstacle = nil);
end;
que tu mets par exemple juste en dessous de la section components.

Puis tu fais :
until IsValidForKey(Map[Point3D(CleX, CleY, 0)]);
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