Salut,
J'ai besoin d'aide pour comprendre cette boucle issue de la vidéo suivante merci https://www.youtube.com/watch?v=xAvFYEXxWKg.
int[][] go(int dy, int dx, boolean updatescore) {
int[][] bak = new int[4][4];
for (int j = 0 ; j < 4; j++) for (int i = 0 ; i < 4; i++) bak[j][i] = b[j][i];
boolean moved = false;
if (dx != 0 || dy != 0) {
int d = dx != 0 ? dx : dy;
for (int perp = 0; perp < b.length; perp++)
for (int tang = (d > 0 ? b.length - 2 : 1); tang != (d > 0 ? -1 : b.length); tang-=d) {
int y = dx != 0 ? perp : tang, x = dx != 0 ? tang : perp, ty = y, tx = x;
if (bak[y][x]==0) continue;
for (int i=(dx != 0 ? x : y)+d; i!= (d > 0 ? b.length : -1); i+=d) {
int r = dx != 0 ? y : i, c = dx != 0 ? i : x;
if (bak[r][c] != 0 && bak[r][c] != bak[y][x]) break;
if (dx != 0) tx = i;
else ty = i;
}
if ( (dx != 0 && tx == x) || (dy != 0 && ty == y)) continue;
else if (bak[ty][tx]==bak[y][x]) {
bak[ty][tx] *= 2;
if(updatescore) score += bak[ty][tx];
moved = true;
}
else if ( (dx != 0 && tx != x) || (dy != 0 && ty != y)) {
bak[ty][tx] = bak[y][x];
moved = true;
}
if (moved) bak[y][x] = 0;
}
}
return moved ? bak : null;
}
BLOQUER