Grille isométrique [Résolu]

Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
- - Dernière réponse : cs_Aaron
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
- 18 août 2008 à 16:46
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!
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
11
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_laurent1024
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
11
0
Merci
Bonjour.
a quoi correspond le $_POST['c'] ?
Commenter la réponse de cs_laurent1024
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
11
0
Merci
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
Commenter la réponse de cs_laurent1024
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
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 :(
Commenter la réponse de cs_Aaron
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
11
0
Merci
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
Commenter la réponse de cs_laurent1024
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
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

?
Commenter la réponse de cs_Aaron
Messages postés
116
Date d'inscription
lundi 29 juillet 2002
Statut
Membre
Dernière intervention
19 janvier 2009
0
Merci
Oui, tu as raison. Cela fonctionne sans problème.

Merci pour ton aide ! :)
Commenter la réponse de cs_Aaron