Je ne sais pas bien où poster cet exercice. A défaut je le fais ici, désolé si je me trompe de section.
J'ai fait en PHP l'algorithme A* en suivant les bons conseils de Patrick Lester
Vous allez surement me dire que le faire en PHP n'a pas bcp d'intérêt.
Je répondrais à cela "et pourquoi pas !"
J'ajouterai que le code PHP en lui même me semble assez simple à porter pour d'autre langage (ce n'est que mon avis).
Et puis on peut faire tellement de chose en PHP, tout est permis
C'est la première fois que je poste un code ici, aussi je fais appelle à votre indulgence, ne pas taper svp si vous trouvez çà pas terrible, j'ai fais aussi bien que j'ai pu.
Quelques mots sur le code
Pour une raison de clarté j'ai répartie le code sur 3 fichiers :
- Le premier est le "Main" (très court) qui symbolise l'initialisation et l'appel de l'algorithme - Les deux boucles - (Main_astar.php)
- Le second est l'algorithme Astar. Il est indépendant en lui même (Algo_astar.php)
- Le 3eme fichier est le rendu graphique du chemin sous la forme d'une simple grille (Visuel_astar.php)
Il y a 2 Classes, l'une pour l'algorithme (class Astar) et une autre le visuel (class RenduVisuel).
Les 3 fichiers sont abondamment commentés (Règle maison d'IBM) et aéré afin de permettre une compréhension du code et de l'algorithme.
Le code en lui même repose sur des instructions simples.
Installation
- Télécharger le zip à l'adresse suivante :
http://www.dedikam.com/telechargement.p ... 1eed174088
- Copier le dossier à la racine de votre dossier www local sous Wamp ou EasyPHP ou sur votre Serveur HTTP
- En local, taper dans votre navigateur l'adresse (après avoir exécuté Wamp ou EasyPHP) :
http://127.0.0.1/astar/Main_astar.php
Il ne reste plus qu'à rafraichir la page (F5) Autant de fois que vous le souhaitez.
Note:
Par défaut le départ et l'arrivée sont placés au hasard tout comme le nombre de murs.
Certains parcours sont extrêmement simples, d'autres montrent que l'algo se débrouille plutôt bien
Il ne faut perdre de vue que le but est simplement de voir que le programme trouve toujours un chemin, le plus proche possible du meilleur chemin et le plus rapidement possible, si cela est physiquement possible.
Modification
- Dans le fichier Main (Main_astar.php) se règle le départ et l'arrivée si vous souhaitez forcer des valeurs.
- Dans le fichier Visuel_astar.php vous pouvez changer la taille de la grille (Faites un "CTRL -" si vous choisissez une grille plus grande selon la taille de votre résolution) et/ou changer la densité des murs du pseudo Labyrinthe.
- Vous pouvez aussi décommenter la section des valeurs dans la grille afin de comprendre les valeurs utiles pour l'algorithme (dans ce cas choisissez une taille de grille plus petite comme 40 * 20 pour la lisibilité des cases).
- Dans le fichier Algo_astar.php vous pouvez changer la valeur de la 'diagonale' afin d'avoir un chemin avec une préférence pour la diagonale (par défaut) ou la ligne droite (un peu plus long à l'exécution).
Voilà, si cela peut servir à quelqu'un.
N'hésitez à faire toutes les remarques que vous souhaitez
Merci de votre attention
Amicalement,
Mostal
