J'ai fait un path finding A* pour ceux que ça interresse.
-->Télécharger<--
Tout n'est pas terminé mais c'est déjà fonctionnel.
NOTA : ne cherchez pas des performances fulgurantes sur vos TI!
EDIT : mise à jour du lien
Vertyos :
Hum... Ça s'utilise comment ? J'ai du ouvrir la source pour comprendre qu'il fallait 4 ou 6 entiers en paramètre, déjà, et j'ai pas vu l'ombre d'une map donc c'est pas spécialement impressionant :/
#ifndef USE_3D_NODES
int PATH_isGoodWay(int X, int Y)
#else
int PATH_isGoodWay(int X, int Y, int Z)
#endif
{
#ifndef USE_3D_NODES
#else
#endif
}
#ifndef USE_3D_NODES
int PATH_isGoodWay(int X, int Y)
#else
int PATH_isGoodWay(int X, int Y, int Z)
#endif
{
#ifndef USE_3D_NODES
if (Y < 0 || Y > 5 || X < 0 || X > 7)
return FALSE;
if (X == 4 && (Y == 1 || Y == 2 || Y == 3))
return FALSE;
return TRUE;
#else
#endif
}
#ifndef USE_3D_NODES
int PATH_isGoodWay(int X, int Y)
#else
int PATH_isGoodWay(int X, int Y, int Z)
#endif
{
#ifndef USE_3D_NODES
if (Y < 0 || Y >= ligne || X < 0 || X >= colonne)
return FALSE;
return ma_matrice[Y*colonne + X];
#else
#endif
}Miles :
Ca veut dire que tu ne peux pas dynamiquement changer de carte, ce qui est ton cas, donc c'est une carte codée en dur.
Ensuite, est-ce que tu as la possibilité de mettre une pénalité de mouvement sur ta carte ? C'est une utilisation avec des cases carrées ?
Miles :
Ca veut dire que tu ne peux pas dynamiquement changer de carte, ce qui est ton cas, donc c'est une carte codée en dur.
Ensuite, est-ce que tu as la possibilité de mettre une pénalité de mouvement sur ta carte ? C'est une utilisation avec des cases carrées ?
IroS :
Pour ce qui est de la pénalité, c'est prévu. Enfin si tu entends pénalité un changement de type de terrain par exemple (avancer sur un chemin != avancer sur du sable ou un marécage)
typedef struct
{
unsigned long Xs,Ys;
unsigned long Xe,Ye;
unsigned int *map;
unsigned long width;
unsigned long height;
#ifdef USE_3D_NODES
unsigned long Zs,Ze;
unsigned long deep;
#endif
unsigned int make_full_path, search_mode, use_hv_move_only;
unsigned long node_number;
NODE** list;
NODE* end_node;
}PATH;