begin process at 2013 06 20 13:53:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > EXEMPLE DE PATHFINDING EN UTILISANT L'ALGORITHME A* (OPENGL) (DEV-C++)

EXEMPLE DE PATHFINDING EN UTILISANT L'ALGORITHME A* (OPENGL) (DEV-C++)


 Information sur la source

Note :
9,22 / 10 - par 9 personnes
9,22 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths & Algorithmes Niveau :Initié Date de création :03/07/2004 Vu / téléchargé :9 072 / 870

Auteur : lolquivole

Ecrire un message privé
Site perso
Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note

 Description

Le monde représenté par le programme est subdivisé en cases:
Le programme indique le plus court chemin (ou presque) pour aller d'une case à une autre en ne se déplacant qu'en diagonale et vers le haut,le bas,la gauche et la droite.
Vous pouvez rajouter ou enlever des murs en cliquant simplement sur la case de votre choix.

Attention! Ce n'est pas du tout optimisé!

Le pathfinding est très important pour les jeux, vous en avez la preuve en voyant certains jeux actuels avec un pathfinding déplorable...


 Conclusion

le code est dans le zip, avec l'exécutable.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • astartest.exeTélécharger ce fichier [Réservé aux membres club]578 417 octets
  • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier17 778 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip COLORATION SYNTAXIQUE D'UN FICHIER SOURCE EN C/C++ (DEV-C++)

 Sources de la même categorie

Source avec Zip LE PROBLÈME DU VOYAGEUR DE COMMERCE EN LANGAGE C (ANT SYSTEM... par casseur
Source avec Zip VECTEUR CREUX par stroke599
Source avec Zip Source avec une capture FONCTIONS EN ACTION par ringo73
CALCUL DE PI AVEC LA BIBLIOTHÈQUE GMP par lann
Source avec Zip Source avec une capture MAGEO3D, POUR GÉRER LES POINTS ET LES VECTEURS DE L'ESPACE R... par pgl10

Commentaires et avis

Commentaire de xarier le 04/07/2004 00:42:02

tout simplement geanial code bien claire programme tres utile mais il ya un trucs que jaurait prefairé c d'avoir ajouter une animation ca serait super :)
et aussi de faire un path finding pour 3D (avec les mur et tout) et la camera bouge pour qu'il trouve le chemin de sortie le plus court elle meme :)

MAIS fronchement BRAVO !!!!

Commentaire de lolquivole le 04/07/2004 01:07:13

le pathfinding en 3D est beaucoup plus complexe (plus de chemins à chercher)
Mais bon si tu reste dans le plan, ce n'est pas si dur à faire : tu transforme la carte 3d en 2d, ensuite tu exécute la fonction pour avoir le chemin, il te suffit avec une caméra qui bouge de suivre le chemin que tu as obtenu. D'ailleurs tu peux mettre des poids aux chemins:tu peux faire en sorte que monter un escalier par exemple, prenne plus de temps que d'y aller par un chemin normal.
Modéliser le monde est quand même la phase la plus difficile...

Commentaire de Saros le 04/07/2004 09:24:43

J'ai trouvé génial, le fait que l'on puis construire soi-même un chemin...
Et puis pareil, en 3D ce serait bien :)
10/10
Saros

Commentaire de fser le 04/07/2004 12:38:56

Mes compilateur ( Dev C++, Borland C++ builder ) retourne des erreurs du type :  
[Linker error] undefined reference to `glColor4f@16'
ou encore
[C++ Erreur] Unit1.cpp(2): E2129 Constante caractère trop longue (ou vide)
ou [C++ Erreur] Unit1.cpp(2): E2206 Caractère '@' (0x|40) incorrect
a quoi est ce du ?
voici les erreurs retournées par visual studio :
Compiling...
main.cpp
c:\téléchargements\sources\pathfinding\main.cpp(53) : error C2059: syntax error : '}'
c:\téléchargements\sources\pathfinding\main.cpp(53) : error C2143: syntax error : missing ';' before '}'
c:\téléchargements\sources\pathfinding\main.cpp(53) : error C2143: syntax error : missing ';' before '}'
c:\téléchargements\sources\pathfinding\main.cpp(56) : error C2059: syntax error : '}'
c:\téléchargements\sources\pathfinding\main.cpp(56) : error C2143: syntax error : missing ';' before '}'
c:\téléchargements\sources\pathfinding\main.cpp(56) : error C2143: syntax error : missing ';' before '}'
c:\téléchargements\sources\pathfinding\main.cpp(59) : error C2059: syntax error : '}'
c:\téléchargements\sources\pathfinding\main.cpp(59) : error C2143: syntax error : missing ';' before '}'
c:\téléchargements\sources\pathfinding\main.cpp(59) : error C2143: syntax error : missing ';' before '}'
c:\téléchargements\sources\pathfinding\main.cpp(62) : error C2059: syntax error : '}'
c:\téléchargements\sources\pathfinding\main.cpp(62) : error C2143: syntax error : missing ';' before '}'
c:\téléchargements\sources\pathfinding\main.cpp(62) : error C2143: syntax error : missing ';' before '}'
c:\téléchargements\sources\pathfinding\main.cpp(391) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\téléchargements\sources\pathfinding\main.cpp(391) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\téléchargements\sources\pathfinding\main.cpp(391) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\téléchargements\sources\pathfinding\main.cpp(396) : error C2374: 'a' : redefinition; multiple initialization
        c:\téléchargements\sources\pathfinding\main.cpp(392) : see declaration of 'a'
c:\téléchargements\sources\pathfinding\main.cpp(446) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\téléchargements\sources\pathfinding\main.cpp(459) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\téléchargements\sources\pathfinding\main.cpp(461) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\téléchargements\sources\pathfinding\main.cpp(463) : warning C4305: 'argument' : truncation from 'const double' to 'float'
c:\téléchargements\sources\pathfinding\main.cpp(465) : warning C4305: 'argument' : truncation from 'const double' to 'float'
Error executing cl.exe.

main.exe - 13 error(s), 8 warning(s)

Commentaire de Saros le 04/07/2004 13:02:28

Il faut installer les librairies OpenGL pour compiler... On peut trouver ça sur le net...

Commentaire de fser le 04/07/2004 13:09:58

Je met 8/10 car je trouve dommage que le chemin puisse se faire en "diagonale" : si on fait un chemin de ce genre :
__
|_|__
   |_]

le "truc" peut se faufiller entre les cubes

Commentaire de RaphAstronome le 05/07/2004 12:51:08

Super !!!

Sous dev-c++ ne pas oublier : -lopengl32 -lGdi32
(dans Options du Projet > Paramètres > Editeur de liens).

Commentaire de Kirua le 13/07/2004 10:03:08

ce serait pas mal de ponderer les cases: traverser du sable est plus dur que traverser du bitume, un truc de ce genre (du style coût en points de mouvement, comme dans heroes of might and magic 4 e.a.)

Commentaire de gomoz le 11/01/2005 14:11:22

super, ca va mettre très utile pour piger le truc !

Commentaire de MATHIS49 le 24/12/2005 21:15:52

Utilité : 11/10
Commentaires : 9/10
Ergonomie : 10/10

Que dire de plus ? A quand l'optimisation? :)

Commentaire de Kirua le 25/12/2005 01:57:43

Pour l'optimisation, tout se joue au niveau de la structure de données qu'on utilise pour récupérer le prochain "noeud" (la prochaine case en fait) à traiter dans l'algorithme.

La première idée c'est de chercher la case dans toute la map à chaque itération: lent!
La seconde, c'est de mettre dans une liste chaînée toutes les cases qui sont susceptibles d'être la suivante (les modifiées en fait): bcp mieux!
La dernière (pour moi en tout cas ^^), c'est de mettre ces cases non pas dans une liste mais dans une priority queue (file à priorité): extraordinairement plus rapide! ^^

Si on imagine une map de n cases, le premier algo est en n², le second également mais dans la pratique c'est bcp bcp bcp mieux, et le troisième est en n log n, avec le n dans le log très petit, donc c'est quasiment linéaire avec le nombre de cases, c'est NOËL, noêl je vous dis ^^

Commentaire de kangoo75 le 26/12/2005 12:12:02

Bonjour,
j'ai installé la librairie openGL ,j'ai mis dans l'éditeur de lien de dev c++ :

-lopengl32
-lglu32
-lglut32

Et j'ai l'erreur à la compilation :


undefined reference to `CreateFontA@56'
undefined reference to `SelectObject@8'
undefined reference to `SelectObject@8'
undefined reference to `DeleteObject@4'
undefined reference to `GetStockObject@4'
undefined reference to `SwapBuffers@4'
undefined reference to `ChoosePixelFormat@8'
undefined reference to `SetPixelFormat@12'
collect2: ld returned 1 exit status
make.exe: *** [Projet2.exe] Error 1

Ai je oublié quelque chose ?

Merci

Commentaire de Kirua le 26/12/2005 12:54:13

tu dois aussi mettre -lgdi il me semble.

Commentaire de kangoo75 le 27/12/2005 16:24:40

Erreur :   cannot find -lgdi :(

Commentaire de Kirua le 27/12/2005 16:26:00

hmm, lgdi32 alors?

Commentaire de kangoo75 le 27/12/2005 18:55:18

bravo ! ça compile .
Merci

PS : pour ceux que ça interresse, 4 articles trés bien sur le pathfinding sur : http://www.vieartificielle.com/article/index.php?action=article&id=161

Commentaire de Maaaaat le 05/01/2008 15:56:09 10/10

Super exactement ce qu'il me fallait

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,742 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales