Bonjour à tous,
Débutant en c++, je suis dans le cadre de mes études amené à coder le jeu de la vie en C++. Les "contraintes" étant que je dois coder en utilisant les classes (orienté objet) et utiliser les tableaux dynamiques avec vector <vector <> > que je n'ai jamais utilisé.
Cependant, à peine au tout début pour créer une grille par défaut et avec uniquement des 0 je rencontre un problème. Le programme compile mais ne m'affiche rien. Voilà le code :
#include <iostream>
#include <vector>
#include <cmath>
#include <fstream>
using namespace std;
class GRILLE {
private :
int NbLignes, NbColonnes;
int NbCellules;
int NbCellulesVie;
vector<vector<bool> > g;
public :
GRILLE();
GRILLE(int, int);
GRILLE(GRILLE &);
~GRILLE();
void affiche();
int GetNbLignes() const {return NbLignes;};
int GetDimY() const {return NbColonnes;};
int GetNbCellules() const {return NbCellules;};
int GetNbCellulesVie() const {return NbCellulesVie;};
void SetDimX(int);
void SetDimY(int);
void SetNbCellules(int);
void SetNbCellulesVie(int);
};
GRILLE::GRILLE(){
NbLignes = 10;
NbColonnes = 10;
NbCellules = 100;
NbCellulesVie = 100;
vector<vector<bool> > g(NbColonnes);
for(int i(0); i < NbColonnes; ++i) {
g[i] = vector<bool> (NbLignes);
}
for(int i=0; i < g.size(); ++i) {
for(int j=0; j < g[i].size(); ++j) {
g[i][j] = false;
}
}
}
void GRILLE::affiche(){
for (int i=0;i<g.size();i++){
for(int j=0; j < g[i].size(); ++j){
if (j == g.size()-1)
{
if (g[i][j]) cout << " 1 "<< endl;
else cout << " 0 " << endl;
}
else
{
if (g[i][j]) cout << " 1 ";
else cout << " 0 ";
}
}
}
}
GRILLE::GRILLE( int a , int b){
cout<<"Appel constructeur "<<NbLignes<<" "<<NbColonnes<<" "<<NbCellules<<" "<<NbCellulesVie<<endl;
NbLignes = sqrt(a);
NbColonnes = sqrt(a);
NbCellules = a;
NbCellulesVie = b;
vector<vector<bool> > g(NbColonnes);
for(int i(0); i < NbColonnes; ++i) {
g[i] = vector<bool>(NbLignes);
}
}
GRILLE::GRILLE(GRILLE& A){
NbLignes = A.NbLignes;
NbColonnes= A.NbColonnes;
NbCellules = A.NbCellules;
NbCellulesVie = A.NbCellulesVie;
}
GRILLE::~GRILLE(){
NbLignes = 0;
NbColonnes = 0;
NbCellules = 0;
NbCellulesVie = 0;
for(int i(0); i < g.size(); ++i) {
for(int j(0); j < g[i].size(); ++j) {
g[i][j] = false;
}
}
}
void GRILLE::SetDimX(int NbLignes_){
NbLignes = NbLignes_;
}
void GRILLE::SetDimY(int NbColonnes_){
NbColonnes = NbColonnes_;
}
void GRILLE::SetNbCellules(int NbCellules_){
NbCellules = NbCellules_;
}
void GRILLE::SetNbCellulesVie(int NbCellulesVie_){
NbCellulesVie = NbCellulesVie_;
}
int main() {
GRILLE b;
b.affiche();
}
Si vous aviez une idée de où ca bloque deja à ce stade, je vous en serait reconnaissant.
Merci d'avance