IA ALGORITHME PATHFINDING A* [VISUAL C++ 6.0]

neo_00110010101 Messages postés 360 Date d'inscription samedi 27 septembre 2003 Statut Membre Dernière intervention 30 mai 2006 - 22 juin 2004 à 22:37
robichou Messages postés 1 Date d'inscription samedi 24 juillet 2004 Statut Membre Dernière intervention 18 avril 2006 - 18 avril 2006 à 16:40
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/23914-ia-algorithme-pathfinding-a-visual-c-6-0

robichou Messages postés 1 Date d'inscription samedi 24 juillet 2004 Statut Membre Dernière intervention 18 avril 2006
18 avril 2006 à 16:40
Bijour bijour,
effectivement pas mal de maps foirent chez moi... Genre dans une map comme :
000000000000000000000000000000
000111111111111111111111111100
000100000000000000000000000100
000100000000000000000000000100
000D00000000000000000000000100
000111111111111111111111100100
000000000010000000000000100100
000000000010000000000000100100
000000000011111110000000100100
000000000000000010000000000100
000000000000000010000011111100
000000000000000000000000000100
0000000000000000A1111111111100
(désolé pas le courage de la simplifier)
L'algo devrait il me semble tout essayer avant de trouver le bon chemin...
De meme le fait de simplement décaler d'une unité vers la droite l'arrivée de la map originale semble tout faire foirer... Il semblerait que la boucle while( !Open.empty() ) soit en cause...
En rajoutant Open.pop_front(); avec Chemin.pop_front(); à la ligne 189 çà marche beaucoup mieu chez moi... Mais bon je ne me suis pas minutieusement penché sur le code dans l'ensemble donc... A votre avis c'est effectivement çà ?
cs_treutreu Messages postés 1 Date d'inscription mardi 31 janvier 2006 Statut Membre Dernière intervention 20 mars 2006
20 mars 2006 à 16:02
salut,
Moi aussi j'ai fait des tests et j'ai pu constater que le programme n'a pas pu trouver le chemin dans la situation suivante:
111111111
110000011
111111011
11111D011
111111011
110000011
11111111A
Second point, le prog ne trouve pas forcement le chemin le + court.
Merci qu'en meme pour ton prog qui est tres bien commenté et tres
clair.
ben
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
13 avril 2005 à 20:00
Bonsoir,

neo, aurais tu quelques liens expliquant ton projet ?
Je te remercie d'avance ;)

Merci

Amicalement, Alex
neo_00110010101 Messages postés 360 Date d'inscription samedi 27 septembre 2003 Statut Membre Dernière intervention 30 mai 2006
24 juin 2004 à 12:57
Après plusieurs tests, j'ai remarqué que lorsque le chemin n'est pas trouvé, (affichage map d'origine seulement) c'est qu'un des deux points est sur un "0" or le programme sait qu'un "0" est infranchissable et que si un "0" est voisin de temp, le programme va "l'oublier"
Voilà encore des codes exemples qui marchent :
AStar a( 2, 1, 18, 27 );
AStar a( 2, 1, 18, 17 );
AStar a( 2, 1, 14, 24 );
AStar a( 20, 12, 21, 28 );
AStar a( 5, 7, 8, 19 );
AStar a( 15, 17, 18, 30 );
AStar a( 5, 17, 18, 30 );
AStar a( 5, 7, 18, 30 );
AStar a( 5, 7, 22, 25 );
AStar a( 4, 12, 22, 25 );
neo_00110010101 Messages postés 360 Date d'inscription samedi 27 septembre 2003 Statut Membre Dernière intervention 30 mai 2006
23 juin 2004 à 12:27
Merci beaucoup LordBob et content de t'avoir aidé !
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
23 juin 2004 à 11:40
allé c'est une bonne source, et bien commenté elle m'a été instructive pour cela je te met 9/10 :)
fser Messages postés 74 Date d'inscription vendredi 26 septembre 2003 Statut Membre Dernière intervention 23 avril 2005
23 juin 2004 à 10:46
Euh, mon ptit cerveau me dit qu'en rejoignant des points de la trajectoire trouvée on devrait pouvoir faire plus court, c'est possible ?
( qu'un itinéraire plus court existe )
neo_00110010101 Messages postés 360 Date d'inscription samedi 27 septembre 2003 Statut Membre Dernière intervention 30 mai 2006
23 juin 2004 à 10:09
Par exemple, je vais mettre des codes officiels ^_^

AStar a( 2, 1, 25, 26 );
AStar a( 7, 1, 6, 7 );
AStar a( 27, 1, 13, 11 );
AStar a( 24, 25, 13, 11 );
AStar a( 17, 25, 5, 18 );
AStar a( 9, 3, 15, 13 );
AStar a( 5, 1, 12, 17 );
AStar a( 9, 1, 16, 21 );

Certifiés fonctionnants ! :)
neo_00110010101 Messages postés 360 Date d'inscription samedi 27 septembre 2003 Statut Membre Dernière intervention 30 mai 2006
23 juin 2004 à 09:46
Je viens de faire des essais et je trouve bien mon chemin ... fais attention où tu mets les pieds ! évite de mettre le point A dans une situation assez délicate :p

Par contre mon système de placement de point est assez dur vu que la map est assez grande ...
Il faut compter les 0 et les 1 ^^
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
23 juin 2004 à 09:31
lorsque je change les valeurs de x et y pour les points d'rrivé et de depart, l'algo ne cherche plus le chemin... pourquoi?
neo_00110010101 Messages postés 360 Date d'inscription samedi 27 septembre 2003 Statut Membre Dernière intervention 30 mai 2006
22 juin 2004 à 22:37
Premierement, désolé pour cette sorte d'"image" qui est compressée à 17 avec PSP8 en JPG donc c'est non pas moche mais extremement moche ! (limite oblige)

Je suis toujours et une nouvelle fois encore ouvert à toute critique : Optimisation, Correction, Amélioration ...

Sur ce, je vais me détendre à UT2k4 ^^
Rejoignez-nous