JeuWeb - Crée ton jeu par navigateur
Algorythme - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Algorythme (/showthread.php?tid=1191)



Algorythme - OncleJames - 19-05-2007

Bonjour,

Sa fait maintenant 2 jours que je cherche un algorythme de calcul pour le système de mouvement.
Certains vont peut etre trouvé ca simple, mais le j'avoue, je sèche completement.

[Image: sanstitreis5.jpg]

Il faut faire attention au x/y , car les x sont décalé sur les y aussi. Contrairement à ce que l'on pourrait croire, la carte est bien généré.

Il est possible de programmer un calcul verifiant si le x du dessus est le meme dans ce cas la on change pas sinon on change, pareil pour les y, mais il me parait bien long pour le calcul de simple mouvement.

Merci d'avance

OncleJames


RE: Algorythme - Ange_blond - 19-05-2007

heuu en fait tu ne pose pas vraiment ton pb ?

tu cherche un algo qui fait quoi précisement ? qui vérifie que la case cible est atteignable en une seule étape ?

Merci de préciser pr qu'on se penche sur le pb Wink


RE: Algorythme - OncleJames - 19-05-2007

Pour les déplacements sur les case haut gauche, et haut droite.

en restant sur la méthode basique :

Nord ouest : x+1 et y+1 tu vas vite voir le prb :pleure2:


RE: Algorythme - naholyr - 19-05-2007

Tu peux trouver la formule très simplement, elle dépend de la case de départ, pour aller au nord-ouest (de X,Y à X',Y') par exemple on a :
X' = X si Y est impair, X-1 sinon
Y' = Y-1

La valeur de X' peut être très simplement exprimée avec les modulos : X' = X-1+Y%2
Si Y est impair Y%2 = 1 et X' = X-1+1 = X
Si Y est pair Y%2 = 0 et X' = X-1+0 = X-1

Tu peux procéder de manière similaire pour les autres calculs de coordonnées voisines posant problème.
Je trouve d'ailleurs bizarre que tu te poses la question car tu as déjà du résoudre ce problème lors de la génération de la map (pour savoir l'X,Y en pixel pour placer ton sprite, il faut déjà suivre ce même résultat pour connaître le décalage).

Tu génères vraiment cette map ? Serait-il possible que tu m'expliques ta méthode car je cherche un moyen simple de passer ma map hexa en isométrique et je galère un peu.


RE: Algorythme - OncleJames - 19-05-2007

Eu .. sa marche pas trop algo

Car x peut etre ou impair, on devra pas faire X=X a chaque fois


RE: Algorythme - naholyr - 19-05-2007

Pardon en effet c'était la parité d'Y qu'il fallait vérifier, enfin le principe est là. Et mon interrogation persiste Smile
Je corrige mon message précédent


RE: Algorythme - OncleJames - 19-05-2007

Je vais faire un tuto sur la carte iso hexa


RE: Algorythme - Nessper - 21-05-2007

Bon je sais pas si ce topic est toujours d'actualité, mais vu qu'il n'y a pas le tag [réglé] je tente quand même.
Est-ce que tu veux pouvoir te déplacer case par case ou au contraire pouvoir aller ou tu veux ? Si t'es dans le deuxieme cas je te conseille de calculer la distance à partir de l'endroit ou est ton perso grâce aux vecteurs. On va dire que la position de départ c'est 1 et celle d'arrivée 2. Tu auras donc :

Code :
$dy = (y2-y1)/(y2-y1);
$dx = (x2-x1)/(x2-x1);
$distance = sqrt($dy+$dx);

Ainsi au chargement de ta page, à chaque cellule que tu crée tu applique cette formule et tu obtiens la distance de ton perso avec toutes les autres cases