If/else if
Résolu
Bonjour,
je vous explique rapidement, je fais une map pour un jeu mais j'ai un petit probléme de génération de motif
en gros je veux ce motif comme ça :
V = vide
Alors qu'avec ce code :
Les deux boucle if sont bonnes, elles me font ce qui est attendu mais
je vu que si n%6 = 0 alors n%3 = 0
MAIS
normalement un simple else if devrait débloquer cette situation ? non ?
je tourne en rond depuis 1h, après promis je vais me coucher...
actuelle j'ai ça :
je vous explique rapidement, je fais une map pour un jeu mais j'ai un petit probléme de génération de motif
en gros je veux ce motif comme ça :
V = vide
VVVVVVVVVVVV...
VVVVVVVVVVVV...
VVVV##VVVV##...
VVVVVVVVVVVV...
VVVVVVVVVVVV...
V##VVVV##VVV...
VVVVVVVVVVVV...
VVVVVVVVVVVV...
VVVV##VVVV##...
VVVVVVVVVVVV...
VVVVVVVVVVVV...
V##VVVV##VVV...
....
Alors qu'avec ce code :
for(int l = 1; l < board.length-1; l++) {
for(int c = 1; c < board[0].length-1; c++) {
if ( l%6==0 && (c%6==1 || c%6==2)) {
board[l][c] ='#';
}
else if ( l%3==0 && ((c+1)%6==0 || (c+1)%6==5)){
board[l][c] = '#';
}
}
}
Les deux boucle if sont bonnes, elles me font ce qui est attendu mais
je vu que si n%6 = 0 alors n%3 = 0
MAIS
normalement un simple else if devrait débloquer cette situation ? non ?
je tourne en rond depuis 1h, après promis je vais me coucher...
actuelle j'ai ça :
VVVVVVVVVVVV...
VVVVVVVVVVVV...
VVVV##VVVV##...
VVVVVVVVVVVV...
VVVVVVVVVVVV...
V##V##V##V##...
VVVVVVVVVVVV...
VVVVVVVVVVVV...
VVVV##VVVV##...
VVVVVVVVVVVV...
VVVVVVVVVVVV...
V##V##V##V##...
....
2 réponses
-
boolean paire = false; for(int l = 1; l < board.length-1; l++) { for(int c = 1; c < board[0].length-1; c++) { if ( l%6==0 && (c%6==1 || c%6==2)) { board[l][c] = '#'; paire = true; } if ( l%3==0 && ((c+1)%6==0 || (c+1)%6==5) && !paire){ board[l][c] = '#'; } paire = false; } }
bloqué par 6 lignes de code, LE REVE TOTAL-
-
for(int l = 1; l < board.length-1; l++) { for(int c = 1; c < board[0].length-1; c++) { if ( l%6==0){ if (c%6==1 || c%6==2){ board[l][c] = new Mur_Indestructible(l, c, this); } } else if ( l%3==0 ){ if ((c+1)%6==0 || (c+1)%6==5){ board[l][c] = new Mur_Indestructible(l, c, this); } } } }
Problème résolu, des fois c'est plus long, mais au moins ça fonctionne !!!
-
-
ModérateurBonjour,
Si tu fais un else, il s'applique sur l'ensemble de la condition, pas juste sur la partie l%6 à moins de la décomposer :if (l % 6 == 0) { if (c % 6 == 1 || c % 6 == 2) board[l][c] = '#'; } else if (l % 3 == 0) { if (c % 6 == 4 || c % 6 == 5) board[l][c] = '#'; }
Remarque : tu peux aussi faire tout ça en une seule condition :if ((l % 6 == 0 && (c % 6 == 1 || c % 6 == 2)) || (l % 6 != 0 && l % 3 == 0 && (c % 6 == 4 || c % 6 == 5))) board[l][c] = '#';