JeuWeb - Crée ton jeu par navigateur
[Réglé] Détermination des cases traversées par une unité en mouvement. - 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 : [Réglé] Détermination des cases traversées par une unité en mouvement. (/showthread.php?tid=1031)



[Réglé] Détermination des cases traversées par une unité en mouvement. - littlefab - 05-04-2007

Bonjour,

Je suis heurté au problème suivant lorsque que je modélise mes maps :

Positionner correctement à un instant t (le moment ou l


RE: Détermination des cases traversées par une unité en mouvement. - Plume - 05-04-2007

Ce que tu demandes c'est - en gros - connaitre les cases qui seront traversées par les unités en déplacement depuis la case de départ, jusqu'à la case d'arrivée ?


RE: Détermination des cases traversées par une unité en mouvement. - denisc - 05-04-2007

Pas dur!

Tu détermines la distance parcourue pour tes deux coordonnées...

Code PHP :
<?php 
$dist_x
= $xa - $xd;
$dist_y = ya - $yd;

Ensuite, tu calcule un delta temporel pour parcourir la distance totale:

Code PHP :
<?php 
$dt
= $duree / $distance;

Puis tu détermine le delta déplacement pour chaque delta temporel:

Code PHP :
<?php 
$dx
= $dist_x / $distance;
$dy = $dist_y / $distance;

Enfin, il est facile de retrouver la liste des cases pour chaque unité de déplacement $distance:

Code PHP :
<?php 
for ($i=0; $i<$distance; $i++)
{
$temps = round($i * $dt * 10)/10; //(pour avoir 1 chiffre après la virgule :)
$pos_x = round($xd + $dx * $dt);
$pos_y = round($yd + $dy * $dt);
echo
'Au temps '.$temps.', on est à la position '.$pos_x.' / '.$pos_y.'<br />';
}

Avec
xd=7
yd=13
xa=39
ya=-9
Ca donne ceci :
Citation :0 7 13
0,2 8 12
0,4 9 12
0,6 9 11
0,8 10 11
1 11 10
1,2 12 10
1,4 13 9
1,6 14 8
1,8 14 8
2 15 7
2,2 16 7
2,4 17 6
2,6 18 6
2,8 19 5
3 19 5
3,2 20 4
3,4 21 3
3,6 22 3
3,8 23 2
4 23 2
4,2 24 1
4,4 25 1
4,6 26 0
4,8 27 -1
5 28 -1
5,2 28 -2
5,4 29 -2
5,6 30 -3
5,8 31 -3
6 32 -4
6,2 33 -5
6,4 33 -5
6,6 34 -6
6,8 35 -6
7 36 -7
7,2 37 -7
7,4 37 -8
7,6 38 -9
7,8 39 -9



RE: Détermination des cases traversées par une unité en mouvement. - denisc - 05-04-2007

Prem's Tongue


RE: Détermination des cases traversées par une unité en mouvement. - littlefab - 05-04-2007

Milles merci pour cette reponse rapide, claire, conscise, .... (les adjectifs me manquent...)

Cordialement.


RE: [Réglé] Détermination des cases traversées par une unité en mouvement. - denisc - 05-04-2007

... De rien Wink J'adoooooore les math Big Grin


RE: [Réglé] Détermination des cases traversées par une unité en mouvement. - Plume - 05-04-2007

J'ai toujours pas compris le problème d'origine ^^


RE: [Réglé] Détermination des cases traversées par une unité en mouvement. - Roworll - 05-04-2007

Citation :... De rien J'adoooooore les math
Cool, un matheux.

Tu peux nous faire le même pour une map hexagonale ? ^^


RE: [Réglé] Détermination des cases traversées par une unité en mouvement. - littlefab - 05-04-2007

Denisc, si vraiment tu aimes les maths, ponds nous une version PHP de A star...

;-)