Oui, mais s'il ne cherche que le chemin en ligne droite, alors A* est très lourd pour rien: il n'y a aucun obstacle et aucune variation de l'indice de réfraction (ouais, j'suis pas sûr du nom, disons qu'on n'a pas à prendre en compte le fait que traverser un marais prenne plus de temps que rouler sur une route en bitume).
Sinon, s'il s'agit d'un vrai chemin, oui, ton A* modifié me semble être la bonne solution.
Pour gérer le bouclage, j'ai de mon coté stocké, pour chaque case, l'identifiant des cases qui lui sont voisines. Ainsi, je sais directement que la case (0,10) est voisine de la case (1439,11), de l'autre coté de la carte. On sépare ainsi clairement la création de la carte de son utilisation: peut importe la forme réelle de la carte (tore, 2D simple, sphère,...) le jeu et le mob ne se focaliseront que sur le test "quelles sont les cases voisines de celle où je suis".
Pour générer les données de voisinages, j'ai d'abord généré le voisinage général ( la case [x,y] est voisine des quatre cases [x+/-1,y+/-1] formant ainsi un damier), et j'ai ensuite traité les cas particuliers des bords (bouclage X ou bouclage Y), puis le cas particulier des sommets ( [0,0], [X,0], [0,Y], [X,Y] avec X Y la taille de carte).
Sinon, pour la ligne droite, je te rédige le code utilisable...
<codage en cours...>
Sinon, s'il s'agit d'un vrai chemin, oui, ton A* modifié me semble être la bonne solution.
Pour gérer le bouclage, j'ai de mon coté stocké, pour chaque case, l'identifiant des cases qui lui sont voisines. Ainsi, je sais directement que la case (0,10) est voisine de la case (1439,11), de l'autre coté de la carte. On sépare ainsi clairement la création de la carte de son utilisation: peut importe la forme réelle de la carte (tore, 2D simple, sphère,...) le jeu et le mob ne se focaliseront que sur le test "quelles sont les cases voisines de celle où je suis".
Pour générer les données de voisinages, j'ai d'abord généré le voisinage général ( la case [x,y] est voisine des quatre cases [x+/-1,y+/-1] formant ainsi un damier), et j'ai ensuite traité les cas particuliers des bords (bouclage X ou bouclage Y), puis le cas particulier des sommets ( [0,0], [X,0], [0,Y], [X,Y] avec X Y la taille de carte).
Sinon, pour la ligne droite, je te rédige le code utilisable...
<codage en cours...>