JeuWeb - Crée ton jeu par navigateur

Version complète : Algorythme
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
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
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
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:
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.
Eu .. sa marche pas trop algo

Car x peut etre ou impair, on devra pas faire X=X a chaque fois
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
Je vais faire un tuto sur la carte iso hexa
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