Forum FunLabyrinthe

Le jeu de labyrinthe fun et gratuit - Retour au site

  • Vous n'êtes pas connecté.

#1 mars 14, 2011 14:02:21

Xaumina
Enregistré : 2011-01-20
Messages : 191
Réputation: +  5  -
Profil   Envoyer un courriel  

Plusieurs héritages

Je ne sais pas si j'ai déjà posté un message similaire, mais j'aimerais bien savoir comment faire hériter à un seul composant deux classes.

Hors-ligne

#2 mars 14, 2011 17:28:17

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

Plusieurs héritages

Ah ben ça, c'est pas possible Et ça ne le sera jamais, car c'est intrinsèque au langage Delphi qui sous-tend tout FunLabyrinthe.

Mais si tu expliques ton besoin concret, on peut sans doute trouver une solution.


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

#3 mars 14, 2011 17:33:01

Xaumina
Enregistré : 2011-01-20
Messages : 191
Réputation: +  5  -
Profil   Envoyer un courriel  

Plusieurs héritages

C'est en fait le système des coffres, mais ayant la propriété de l'arbre de Grappers. J'ai déjà le coffre ouvert vide (et ça fonctionne), mais c'est tout ce que je peux faire.

Hors-ligne

#4 mars 14, 2011 17:49:12

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

Plusieurs héritages

Le moyen le plus "simple", mais le plus dégueulasse, est de faire une sous-classe de TTree, et d'écrire dedans :
uses
  Chests;

obstacle TTreeLikeClosedChest(TTree)
  name 'Coffre fermé qui fait arbre en même temps';

  on Pushing do
  begin
    ClosedChest.Pushing(Context);
  end;
end;

Pour une version ultérieure, je vais ajouter un mécanisme plus élégant pour faire ça.


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Modifié sjrd (mars 14, 2011 17:49:37)

Hors-ligne

#5 mars 14, 2011 20:31:09

Xaumina
Enregistré : 2011-01-20
Messages : 191
Réputation: +  5  -
Profil   Envoyer un courriel  

Plusieurs héritages

Mais le coffre fermé qui fait arbre en même temps devient justement un coffre ouvert vide : or, j'aimerais bien que ça devienne le coffre ouvert vide que j'ai fait moi-même.
Dois-je faire :
on Pushing do
  begin
    TreeLikeOpenChest.Pushing(Context);
  end;

?

Modifié Xaumina (mars 14, 2011 20:31:43)

Hors-ligne

#6 mars 14, 2011 20:39:27

intello
De : Yvelines
Enregistré : 2010-07-25
Messages : 167
Réputation: +  9  -
Profil  

Plusieurs héritages

Non tu dois recopier tout le code de Chests et changer les
Painter.Clear 
Painter.AddImage('Chests/Closed(ou Open)Chests')
par
 Painter.Clear 
Painter.AddImage('Nature/Tree')


========================================
Pas, Flèches rapides, Flèches masquées, Impossible par Maxime, Elévateurs & Terrains vides,
Jeu de boutons

Admirez mes jeux de flèches, de téléporteurs , d'escaliers , de pas ou de boutons !


Notez ces labyrinthes

Hors-ligne

#7 mars 15, 2011 10:15:56

Xaumina
Enregistré : 2011-01-20
Messages : 191
Réputation: +  5  -
Profil   Envoyer un courriel  

Plusieurs héritages

Le coffre fermé hérite de TBlock, et il faut qu'il hérite de TTree. On ne peut pas supprimer TBlock, sinon le programme ne reconnaît plus la propriété HideEffectAndTool. De même, si on supprime TTree, on ne peut plus s'accrocher à ce coffre...

Hors-ligne

#8 mars 15, 2011 10:59:03

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

Plusieurs héritages

Ah oui j'avais oublié le HideEffectAndTool.

Bon ben on peut faire encore plus dégueu :
uses
  Chests;

obstacle TTreeLikeClosedChest(TTree)
  name 'Coffre fermé qui fait arbre en même temps';

  on DoDraw do
  begin
    ClosedChest.Draw(Context);
  end;

  on Pushing do
  begin
    ClosedChest.Pushing(Context);
  end;
end;


---
Sébastien Doeraene
Auteur de FunLabyrinthe

Hors-ligne

Pied de page

Modération

Powered by DjangoBB

Lo-Fi Version