Bonjour, dans le bout de code suivant je tente d'appeler une procédure qui va compter le nombre de voisins d'une cellule dans un tableau. Je sais que mon programme plante lorsque je l'appele dans Tableau :: nouvelleGeneration...
Est-ce que quelqu'un peut m'expliquer pourquoi??
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 int Tableau :: nombresVoisins(int i, int j, bool tab[24][80]) { int nbVoisins = 0; if (grille[i-1][j-1] == true) { nbVoisins ++; } if (grille[i-1][j] == true) { nbVoisins ++; } if (grille[i-1][ j+1] == true) { nbVoisins ++; } if (grille[i][j-1] == true) { nbVoisins ++; } if (grille[i ][j+1] == true) { nbVoisins ++; } if (grille[i+1 ][j-1] == true) { nbVoisins ++; } if (grille[i+1][j] == true) { nbVoisins ++; } if (grille[i+1][j+1] == true) { nbVoisins ++; } return nbVoisins; } void Tableau :: nouvelleGeneration() { bool grilleTemp[24][80]; //La copie fonctionne //Copier la grille dans un tableau temporaire for(int i = 0 ; i < 24 ; i++) { for(int j = 0 ; j < 80 ; j++) { grilleTemp[i][j] = grille[i][j]; } } for(int i = 0 ; i < 24 ; i++) { for(int j = 0 ; j < 80 ; j++) { //Si une cellule est invisible et elle est entourée de trois cellules //elle devient visible. if(grilleTemp[i][j] == false && nombresVoisins(i,j,grilleTemp) == 3) { grille[i][j] = true; } //Si une cellule vivante n'est pas entouré de deux //ou trois cellules elle devient invisible if(grilleTemp[i][j] == true && (!(nombresVoisins(i,j,grilleTemp) == 2) || !(nombresVoisins(i,j,grilleTemp) == 3 ))) { grille[i][j] = false; } } }
Partager