franco_se
Messages postés151Date d'inscriptionsamedi 1 novembre 2003StatutMembreDernière intervention30 juillet 2018
-
29 avril 2007 à 14:28
franco_se
Messages postés151Date d'inscriptionsamedi 1 novembre 2003StatutMembreDernière intervention30 juillet 2018
-
1 mai 2007 à 23:03
bonjour
je cherche un script en php de l'algo de pathfinding A*.
quelqu'un en a-t-il deja creer un ? ou si non, une idée pour le realiser ?
franco_se
Messages postés151Date d'inscriptionsamedi 1 novembre 2003StatutMembreDernière intervention30 juillet 20182 1 mai 2007 à 23:03
merci ça m'a permis de faire un script rapide .
mais bizarrement, il bug. c'est a dire que durant la recherche du chemin, il concidere comme la case "arrivée" atteinte ( or ça ne devrait pas etre le cas ), et je sais pas pq ! ( et ça m'enerve ! )
voila le script ( je l'ai fait rapidement, donc ne faites pas gaffe a l'horreur dos il s'agit lol )
relancez le plusieur foit ac F5, et vous verrez qu'il se plante de tps en tps ....
<?php
$tableau = array();
// largeur et hauteur du tableau
$largeur_tableau = 15;
$hauteur_tableau = 15;
// coodronnées de départ et d'arrivée
$depart = array(mt_rand(0, $largeur_tableau), mt_rand(0, $hauteur_tableau));
$arrivée = array(mt_rand(0, $largeur_tableau), mt_rand(0, $hauteur_tableau));
// si les coordonnées de départ et d'arrivée sont identiqueswhile ($arrivée $depart) $arrivée array(mt_rand(0, $largeur_tableau), mt_rand(0, $hauteur_tableau));
// creation des coordonnées de la case en cours
$coordonnées_courant = $depart ;
// création du tableau, et ttibution de valeur aux case ( 0=infranchissables; 1=franchissables )
for($i=0; $i<=$hauteur_tableau; $i++) for($j=0; $j<=$largeur_tableau; $j++) $tableau[$i][$j] = (mt_rand(0, 20)==0)?"0":"1";
// les cases de départs et d'arriovées ot une valeur de
$tableau[$depart['0']][$depart['1']] = "1";
$tableau[$arrivée['0']][$arrivée['1']] = "1";
// seules les 4 case de haut , de bas, a gauche et a droite sont accessibles
$cases_annexes = array( array ('0', '1', '-1', '0'), array ('1', '0', '0', '-1') );
$stop=0;
//boucle du pathfinding
// elle ne s'arrete que si la case d'arrivé est atteinte, ou apres 100 boucles
// calcul de la distance de la case en cour a la case annexe en cours d'analyse
$dist_origine_case_annexe_x = abs( ($coordonnées_courant['0']+$cases_annexes['0'][$k]) - $coordonnées_courant['0']);
$dist_origine_case_annexe_y = abs( ($coordonnées_courant['1']+$cases_annexes['1'][$k]) - $coordonnées_courant['1']);
// calcul de la distance de la case annexe en cours d'analyse et du point d'arrivé
$dist_final_case_annexe_x = abs( ($coordonnées_courant['0']+$cases_annexes['0'][$k]) - $arrivée['0']);
$dist_final_case_annexe_y = abs( ($coordonnées_courant['1']+$cases_annexes['1'][$k]) - $arrivée['1']);