Bonjour, j'ai un projet à faire en isn, et j'ai choisi de programmé un sudoku en javascool
mais je suis bloquer sur une parti, la compilation marche mais pas l’exécution et je n'arrive pas a trouvé d'ou viens le problème
void Couleur(int[][] grille) {
int largeur = grille.length;
int hauteur = grille[0].length;
for (int x = 0; x <= (largeur -1); x = x +1) {
for (int y = 0; y <= (hauteur -1); y = y +1) {
if (grille[x][y] ==1) {
setPixel(x, y -3, 0, 0, 0);
setPixel(x, y -2, 0, 0, 0);
setPixel(x, y -1, 0, 0, 0);
setPixel(x, y, 0, 0, 0);
setPixel(x, y +1, 0, 0, 0);
setPixel(x, y +2, 0, 0, 0);
setPixel(x, y +3, 0, 0, 0);
setPixel(x -1, y -2, 0, 0, 0);
setPixel(x -1, y +3, 0, 0, 0);
setPixel(x +1, y +3, 0, 0, 0);
} else if (grille[x][y] ==2) {
setPixel(x -2, y -2, 0, 0, 0);
setPixel(x -1, y -3, 0, 0, 0);
setPixel(x, y -3, 0, 0, 0);
setPixel(x +1, y -3, 0, 0, 0);
setPixel(x +2, y -2, 0, 0, 0);
setPixel(x +2, y -1, 0, 0, 0);
setPixel(x +1, y, 0, 0, 0);
setPixel(x, y +1, 0, 0, 0);
setPixel(x -1, y +2, 0, 0, 0);
setPixel(x -2, y +3, 0, 0, 0);
setPixel(x -1, y +3, 0, 0, 0);
setPixel(x, y +3, 0, 0, 0);
setPixel(x +1, y +3, 0, 0, 0);
setPixel(x +2, y +3, 0, 0, 0);
} else if (grille[x][y] ==3) {
setPixel(x -2, y -2, 0, 0, 0);
setPixel(x -1, y -3, 0, 0, 0);
setPixel(x, y -3, 0, 0, 0);
setPixel(x +1, y -3, 0, 0, 0);
setPixel(x +2, y -2, 0, 0, 0);
setPixel(x +2, y -1, 0, 0, 0);
setPixel(x, y, 0, 0, 0);
setPixel(x +1, y, 0, 0, 0);
setPixel(x, y +3, 0, 0, 0);
setPixel(x +2, y +1, 0, 0, 0);
setPixel(x -2, y +2, 0, 0, 0);
setPixel(x +2, y +2, 0, 0, 0);
setPixel(x -1, y +3, 0, 0, 0);
setPixel(x, y +3, 0, 0, 0);
setPixel(x +1, y +3, 0, 0, 0);
} else if (grille[x][y] ==4) {
setPixel(x +1, y -3, 0, 0, 0);
setPixel(x, y -2, 0, 0, 0);
setPixel(x -1, y -1, 0, 0, 0);
setPixel(x -2, y, 0, 0, 0);
setPixel(x +1, y, 0, 0, 0);
setPixel(x -2, y +1, 0, 0, 0);
setPixel(x -1, y +1, 0, 0, 0);
setPixel(x, y +1, 0, 0, 0);
setPixel(x +1, y +1, 0, 0, 0);
setPixel(x +2, y +1, 0, 0, 0);
setPixel(x +1, y +2, 0, 0, 0);
setPixel(x +1, y +3, 0, 0, 0);
} else if (grille[x][y] ==10) {
setPixel(x, y, 0, 0, 0);
}
}
}
}
// Partie Léa
// Ici les grilles sont de taille 9x9
boolean creation(int[][]GRILLE, int x, int y) {
int[] LISTE = new int[4];
LISTE[0] = random(1, 5);
for (int i = 1; i < 4; i ++) {
for (boolean valable = false; ! valable;) {
// quand le nombre aléatoire tiré est déjà dans la liste
LISTE[i] = random(1, 5);
valable = true;
for (int j = 0; j < i; j ++) {
if (LISTE[i] == LISTE[j]) {
valable = false;
}
}
}
}
for (int i = 0; i < 4; i ++) {
if (check(GRILLE, x, y, LISTE[i])) {
GRILLE[x][y] = LISTE[i];
if ((x == 3) && (y == 3)) {
return true;
}
if (x == 3) {
if (creation(GRILLE, 0, y +1)) {
return true;
}
} else {
if (creation(GRILLE, x +1, y)) {
return true;
}
}
}
}
GRILLE[x][y] =0;
return false;
}
boolean check(int[][]GRILLE, int x, int y, int a) {
for (int i = 0; i < x; i ++) {
if (GRILLE[i][y] == a) {
return false;
}
}
for (int j = 0; j < y; j ++) {
if (GRILLE[x][j] == a) {
return false;
}
}
int xx = (x /3) *3;
int yy = (y /3) *3;
for (int i = 0; i < 3; i ++) {
for (int j = 0; j < 3; j ++) {
if (GRILLE[xx + j][yy + i] == a) {
return false;
}
if ((xx + j == x) && (yy + i == y)) {
return true;
}
}
}
return true;
}
void main() {
// PARTIE LEA
int[][] TABLEAU = new int[4][4];
while ( ! creation(TABLEAU, 0, 0)) {
// creation peut rater, mais c'est rare.
}
int d,e,z, a;
int grille[][] = new int[48][48];
// PARTIE PIERRE
//Remplissage des cases
int tabx, taby;
tabx = 0;
for (d =7; d < 48; d = d +11) {
taby =0;
for (e =7; e < 48; e = e+11) {
grille[d][e] = TABLEAU[tabx][taby];
taby = taby +1;
}
tabx = tabx +1;
}
reset(48, 48, false);
Couleur(grille);
}
</code>