Grille isométrique [Résolu]

Signaler
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
-
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
-
Bonjour,


J'aimerais obtenir la position x : y de la n ième case sur cette petite
grille isométrique. J'ai essayé de passer par une division et le reste
mais cela ne fonctionne pas pour les multiple de 5. J'aimerais éviter
de passer par des if, etc. alors que je pense qu'il y a bien plus
simple.


Voici le code avec lequel j'ai essayé :





$_POST['c']%5!=0 ? $Pos = floor($_POST['c']/5).':'.($_POST['c']%5-1) : $Pos = floor($_POST['c']/5).':'.($_POST['c']%5);   





Merci par avance!

7 réponses

Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
24
Dans mon exemple je suis parti a partir de 0 à 24 (cf le schéma que j'ai fait tout à l'heure).
Vu que toi a priori le 5 est à la place 0:4, cela voudrait dire que tu commence ta numérotation de 0 à 25. Dans ce cas il faut bien un replacer $c par $c-1.
Par contre je ne comprends pas pourquoi tu veux utiliser une valeur absolue vu que si c varie entre 1 et 25, c-1 variera entre 0 et 24.
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
24
Bonjour.
a quoi correspond le $_POST['c'] ?
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
24
Si 'c' représente la nième case (de 0 à 24) dans le cas d'un grille 5 *5..
$x = floor($_POST["c"] / 5);
$y = $_POST["c"] % 5;
(ou l'inverse en fonction de ta numérotation).

Cdt
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009

Salut laurent1024,

Le problème est que si $c = 5
$x floor(5/5) 1;$y 5%5 0;

Donc j'obtiens une position : 1:0 et non pas 0:5 :(
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
24
C'est normal.
Sur une grille 5 * 5 les numérotation vont de 0:0 a 4:4 (comme sur ton dessin d'ailleurs.
La position 0:5 n'existe pas. Ou alors il s'agit d'une grille 6 * 6.

Pour calculer les x et y je me suis basé sur l'exemple suivant
Tu n'as peut être pas ordonné dans le même ordre que moi, il suffit peut être seulement d'inverser le x et le y.
Avec un grille 5:5
Position
0:0    1:0    2:0    3:0    4:0
0:1    1:1    2:1    3:1    4:1

0:2    1:2    2:2    3:2    4:2

0:3    1:3    2:3    3:3    4:3

0:4    1:4    2:4    3:4    4:4

avec le numéro.
0      5       10     15     20
1      6       11     16     21
2      7       12     17     22
3      8       13     18     23
4      9       14     16     24
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009

Exact, je me suis trompé pour le 0:5.
J'utilise le même ordre que toi.
Pour la case 1 : x=0, y=0
Pour la case 2 : x=0, y=1

Malheureusement, avec ce script,

$x = floor($c/5);
$y = $c%5;

La case 5 adopte une position de 1:0 et non de 0:4. P-e faudrait-il utiliser :

$x= floor(abs($c-1)/5);
$y= abs($c-1)/5

?
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009

Oui, tu as raison. Cela fonctionne sans problème.

Merci pour ton aide ! :)