Bonjour,
J'ai un soucis avec une variable dans mon code. Cette variable, counter, est un compteur mais le problème est que ce variable vaut soit 1 soit 0, alors qu'elle devrait parfois valoir 3, 4 etc. La variable sert en fait à compter le nombre de case contenant des 1 autour de la case courante, dans un tableau rectangulaire constituée de cases. Pourriez-vous jeter un coup d'oeil à mon code pour détecter l'erreur? D'avance merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 int height = Integer.parseInt(taille[0]); //je reprends les dimesions du tableau int width = Integer.parseInt(taille[1]); int counter; int [][] tempWorld = new int [height] [width];//il s'agit d'un tableau temporaire int nombreIteration=1; //nombre d'itération à effectuer for(int c=0; c <= nombreIteration; c++) { for(int j=0; j<width; j++) //cette double boucle compte le nombre de case qui valent 1 autour de la case [j][k] dans le tableau { for(int k=0; k<height; k++) { counter = 0; if(j-1 >= 0 && k-1 >= 0 && world[j-1][k-1] == 1) // j'ai mis ces conditions sur le j et k pour ne pas sortir du tableau counter++; else if(j-1 >= 0 && world[j-1][k] == 1) counter++; else if(j-1 >= 0 && k+1 < height && world[j-1][k+1] == 1) counter++; else if(k+1 < height && world[j][k+1] == 1) counter++; else if(j+1 < width && k+1 < height && world[j+1][k+1] == 1) counter++; else if(j+1 < width && world[j+1][k] == 1) counter++; else if(j+1 < width && k-1 >= 0 && world[j+1][k-1] == 1) counter++; else if(k-1 >= 0 && world[j][k-1] == 1) counter++; //cette partie sert à determiner le nouveau tableau pour la prochaine itération if((counter == 2 || counter == 3) & world[j][k] == 1) tempWorld[j][k]=1; else if(counter <= 1 | counter >= 4) tempWorld[j][k] = 0; else if(counter == 3 & world[j][k] == 0) tempWorld[j][k]=1; } } for(int a=0; a<height; a++) //on recopie le tableau temp. dans le bon tableau for(int b=0; b<width; b++) world[a][b] = tempWorld[a][b]; }
Partager