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];
 
		}