Bonjour je suis débutant en c++ et je suis en train de programmer le "jeu de la vie". J'ai réussi à le programmer sans encapsuler mes données mais ce n'était pas vraiment le but du projet. Alors j'ai créer une classe Tableau et j'ai fourni ses méthodes, et maintenant rien ne va plus. À la création de mon objet tableau, mes valeurs ne s'initialise plus comme il se doit, et l'affichage n'est vraiment pas correct.

Voici ma classe tableau:
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
*
*Classe qui représente un Tableau
*
*
*
*
*
*/
    #include "Tableau2.hpp"
 
    const int NBRELIGNES = 24;
    const int NBRECOLONNES = 80;
 
 
    //Constructeur
    //Initialisation par défaut
    Tableau :: Tableau()
    {
        for(int i = 0 ; i < NBRELIGNES ; i++)
        {  for(int j = 0 ; j < NBRECOLONNES ; j++)
           {
                grille[i][j] == false;
                cout << grille[i][j];
                if(0 == j%80)
                cout << endl;
 
           }
        }
 
    }
 
    Tableau :: Tableau(const Tableau& tab)
    {
        *this = tab;
        /*for(int i = 0 ; i < NBRELIGNES ; i++)
        {  for(int j = 0 ; j < NBRECOLONNES ; j++)
           {
                bool etat = grille[i][j];
                tab.setEtat(i , j , etat);
           }
        }*/
    }
 
    //Destructeur
    Tableau :: ~Tableau()
    {
        delete [] grille;
    }
 
    //accesseurs
    bool Tableau :: getEtat(int i , int j) const
    {
        return grille[i][j];
    }
 
    void Tableau :: setEtat(int i , int j , bool etat)
    {
        grille[i][j] = etat;
 
    }

et mon main...
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
 
#include <iostream>
#include <fstream>
#include "tableau2.hpp"
//#include "PortableSleep.hpp"
 
using namespace std;
 
 
 
//Prototypes
void ouvrirFichier(Tableau& tab);
 
void afficherTableau(Tableau& tab);
 
int nombreVoisins(int i, int j, Tableau& tab);
 
void modifierTableau(Tableau& tab1 ,Tableau& tab2);
 
 
const int NBRELIGNES = 24;
const int NBRECOLONNES = 80;
 
int main()
{
 
    Tableau grille;
    Tableau grilleTemp;
 
    ouvrirFichier(grille);
 
    int i = 0 ;
    while( i < 2){
 
 
    afficherTableau(grille);
    modifierTableau(grille ,grilleTemp);
    i++;
 
    }
 
    system("Pause");
    return 0;
}
 
 
void afficherTableau(Tableau& tab)
{
    for (int i = 0 ; i < NBRELIGNES ; i ++)
    {   for (int j = 0 ; j < NBRECOLONNES ; j++)
        {
          if (j%NBRECOLONNES == 0)
          {
 
                cout << endl;
          }
          else
          {
                if (tab.getEtat(i,j) == true)
                {
                    cout <<i<<j;
                    cout << '+' ;
                }
                if (tab.getEtat(i,j) == false)
                {
                    cout << ' ' ;
                }
          }
        }
    }
}
 
 
//Ouvrir le fichier et initialiser les données dans le tableau
 
void ouvrirFichier(Tableau&  tab)
{
 
    ifstream fichier ("test.txt", ifstream::in);
 
 
    while(!fichier.eof())
    {
 
        int i1;
        int i2;
        fichier >> i1 >> i2;
 
        tab.setEtat(i1,i2,true);
 
    }
}
/*
*Modidie le tableau pour passer à la prochaine étape
*du jeu de la vie en passant par un tableau intermédiaire.
*
*/
void modifierTableau(Tableau& tab1, Tableau& tab2)
{
    tab2 = Tableau(tab1);
 
    for (int i = 0 ; i < NBRELIGNES  ; i++)
    {   for (int j = 0 ; j < NBRECOLONNES  ; j++)
        {
            if(tab1.getEtat(i,j)== false && nombreVoisins(i,j,tab1) == 3)
            {
                tab2.setEtat(i,j,true);
            }
            if(tab1.getEtat(i,j) == true && !(nombreVoisins(i,j,tab1) == 2 || nombreVoisins(i,j,tab1) == 3 ))
            {
                tab2.setEtat(i,j,false);
            }
 
        }
    }
 
    tab1 = Tableau(tab2);
 
}
int nombreVoisins(int i, int j, Tableau& tab)
{
    int nombreVoisins = 0;
    if (tab.getEtat(i-1 , j-1) == true)
    {
        nombreVoisins ++;
    }
    if (tab.getEtat(i-1 , j) == true)
    {
        nombreVoisins ++;
    }
    if (tab.getEtat(i-1 , j+1) == true)
    {
        nombreVoisins ++;
    }
    if (tab.getEtat(i , j-1) == true)
    {
        nombreVoisins ++;
    }
    if (tab.getEtat(i , j+1) == true)
    {
        nombreVoisins ++;
    }
    if (tab.getEtat(i+1 , j-1) == true)
    {
        nombreVoisins ++;
    }
    if (tab.getEtat(i+1 , j) == true)
    {
        nombreVoisins ++;
    }
    if (tab.getEtat(i+1 , j+1) == true)
    {
        nombreVoisins ++;
    }
 
    return nombreVoisins;
}
Le programme va chercher les données dans un fichier test.txt
Alors merci à l'avance!