LABYRINTHE RESOLVER

defis91 Messages postés 65 Date d'inscription samedi 29 octobre 2005 Statut Membre Dernière intervention 8 août 2011 - 14 juin 2010 à 14:47
diglas Messages postés 63 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 3 mai 2010 - 6 août 2010 à 01:45
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51909-labyrinthe-resolver

diglas Messages postés 63 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 3 mai 2010
6 août 2010 à 01:45
j'ai pu utiliser une autre alternative pour le problème d'affichage du labyrinthe:
je crée ma carte sur un Bitmap temporaire puis je la transmet au composant TLaby.

Fallait y penser!!
diglas Messages postés 63 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 3 mai 2010
16 juil. 2010 à 02:20
A propos du probleme avec la carte proposée par Timmalos ci-dessus, j'ai pu régler ca en m'inspirant de la methode de Debiars combinée a la tienne.

Par contre, tu pourra m'aider a comprendre comment créer un labyrinthe de dimension XY avec X<>Y en utilisant ton generateur??????
diglas Messages postés 63 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 3 mai 2010
16 juil. 2010 à 02:16
je viens de modifier a propos du probleme:
au lieu de mettre le code "Generer(IDim);" à la création de TLaby, je l'ai remplacé par:
if not repeter then
begin
Generator(IDim);
InitImage;
initLists;
DrawMap;
repeter:= true;
end;
et je l'ai insérer dans la procedure TLaby.generer(nDim);
car dans le premier cas, ca ne permettait pas un bon affichage de la carte sur l'editeur(bien qu'il n y ai pas vraiment de relation parce que l'editeur utilise la procedure generer(nCol,nRow) de TLaby et non celle à un seul parametre).

Quelqu'un pourrait peut êttre m'aider la dessus!!??
diglas Messages postés 63 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 3 mai 2010
16 juil. 2010 à 01:49
voici Bacterius ta remarque réalisée bien que non parfait.
sinon, j'ai pu réviser tout le code en recréant toutes les classes et certaines méthodes (bien ordonnées je pense).
ainsi, j ai pu en resortir un generateur+solver solide en m'inspirant de Timmalos et Debiars que j'en profite de remercier de cet exercice et j'attend du mieux d'eux.

un probleme: lors de l'affichage du labyrinthe, des fois mal affiché malgré la présence de "DoubleBuffered:=true;". j'ai du alors palier en générant un labyrinthe à la création de TLaby ("Generer(IDim);").

un bon aide venant de vous les lecteurs me serrais tres utille.
diglas Messages postés 63 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 3 mai 2010
2 juil. 2010 à 14:38
me voici de retour! manque de temps avec la coupe du monde qui passe.
J ai quand même profité de rattraper mon absence en mettant a jour ce code.

NB: reste encore à créer un editeur de fichier *.SLB(proposition de Bacterius) et à optimiser le code de la recherche du plus court chemin(je verrais ca avec timmalos s il le veux bien).

Je ne vous ai donc pas oublié, juste question de temps! rassurez-vous je m'y met au travail, je m'inspire du code de Debiars pour l'éditeur (s'il ne vois pas d'inconvenient).

Pourquoi publier alors?
juste pour ceux qui en télécharge, qu'ils aient une nouvelle vision du code.
timmalos Messages postés 7 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 7 août 2011
17 juin 2010 à 09:50
Pour tester le labyrinthe, ce que je peux dire c'est qu'on la testé sur 5000 labyrinthes (boucle for et generation avant chaque sortie la loutre est sortie 5000 fois. Apres on a testé sur des fichiers faits mains, la loutre est toujours sortie, mais quelques fois elle ne prend pas le chemin le plus court, car je n'ai pas eu le temps de finir l'algorithme (Defis91 l'a peut etre modifié je n'ai pas verifié) mais voilà par exemple un labyrinthe ou vous verrez tout de suite que la loutre ne prend pas le plus simple!

MMMMMMMMMMMMM
MMMMM S
MMMMM MMMMM M
MMMMM M M
MMMMM M MMMMM
MMMMM M M
MMMM MMMMM M
MMM MM M
MMM MMM MMMMM
M MMM M
M MMMMMMMMM M
E M
MMMMMMMMMMMMM
diglas Messages postés 63 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 3 mai 2010
15 juin 2010 à 23:16
bon astuce Debiars!
je n'est pas encore scruter le code, mais bonne idée d'interface.
diglas Messages postés 63 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 3 mai 2010
15 juin 2010 à 23:16
bon astuce Debiars!
je n'est pas encore scruter le code, mais bonne idée d'interface.
diglas Messages postés 63 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 3 mai 2010
15 juin 2010 à 23:16
bon astuce Debiars!
je n'est pas encore scruter le code, mais bonne idée d'interface.
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
14 juin 2010 à 22:37
Salut Diglas,
intéressant, bonne source, l'on voit que la loutre ne cherche pas sa sortie aléatoirement mais utilise un algorithme efficace à priori. J'aurais bien aimé la possibilité de créer son propre labyrinthe (j'ai quand même pu le faire en éditant mon propre fichier SLB mais je me demandais s'il ne serait pas possible de fournir un mini-éditeur, genre cliquer sur une case avec le bouton gauche met un mur, avec le bouton droit retire le mur ?). Ceci dans le but de mettre à l'épreuve la méthode utilisée pour résoudre le labyrinthe :)

Fonctionnel sous Vista SP1.

Cordialement, Bacterius !
diglas Messages postés 63 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 3 mai 2010
14 juin 2010 à 15:48
Merci "DEFIS91" pour la remarque! Bon coup d'oeil.
mais au lieu d'ajouter
FLabyrinthe.Panel2.DoubleBuffered:=true;
dans la fonction afficher_sortie(), on pourrait bien l'initié à la création de l'application: donc le mettre dans le méthode:
TFLabyrinthe.FormCreate(Sender: TObject);

Précision: comme je l'ai préciser dans la description, je n'ai pas encore eu le temps de bien structurer les classes de labyrinthe. donc cette application peut encore être utiliser sans ma librairie ND (pas encore nécéssaire).

Quand même, merci "DEFIS91" de l'intérêt que tu porte à préciser!
Rejoignez-nous