Ia algorithme pathfinding a* [visual c++ 6.0]

Soyez le premier à donner votre avis sur cette source.

Vue 13 613 fois - Téléchargée 1 580 fois

Description

Cette source est un algorithme plus connu sous le nom de "A*" ou A star. Son but : trouver le chemin le plus court entre deux points (AI pathfinding)

Par neo_00110010101@hotmail.com

Une map est générée (30 ; 30) avec un point de départ et d'arrivée et le programme (A*) va trouver le chemin le plus court.

Conclusion :


// Débuté le 21/06/04
// Terminé le 22/06/04
// Mise A Jour du **/**/**

//****************************************************************************//

Results
algoAstar.exe - 0 error(s), 0 warning(s)

Comme ça, c'est clair ^^

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
samedi 24 juillet 2004
Statut
Membre
Dernière intervention
18 avril 2006

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 çà ?
Messages postés
1
Date d'inscription
mardi 31 janvier 2006
Statut
Membre
Dernière intervention
20 mars 2006

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
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Bonsoir,

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

Merci

Amicalement, Alex
Messages postés
360
Date d'inscription
samedi 27 septembre 2003
Statut
Membre
Dernière intervention
30 mai 2006

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 );
Messages postés
360
Date d'inscription
samedi 27 septembre 2003
Statut
Membre
Dernière intervention
30 mai 2006

Merci beaucoup LordBob et content de t'avoir aidé !
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.