Commit fecfa7f3 authored by Yann Boucher's avatar Yann Boucher
Browse files
parents 28461e23 d1623008
Pipeline #78302 passed with stages
in 16 seconds
...@@ -19,7 +19,12 @@ Cette classe représente un réseau de cellules. ...@@ -19,7 +19,12 @@ Cette classe représente un réseau de cellules.
using namespace std; using namespace std;
// TODO : documenter /**
\struct Grid
\brief Représente une grille d'états.
Cette structure représente une grille d'états.
**/
class Structure; class Structure;
...@@ -28,12 +33,21 @@ class Grid{ ...@@ -28,12 +33,21 @@ class Grid{
int nb_col; int nb_col;
std::vector<unsigned int> matrix; std::vector<unsigned int> matrix;
public: public:
//! \brief Constructeur par défaut, avec le nombre de ligne et de colonne souhaités
Grid(size_t l,size_t c); Grid(size_t l,size_t c);
//! \brief Constructeur par copie d'une grille
Grid(const Grid& g); Grid(const Grid& g);
//! \brief Retourne le nombre de lignes
//! \return Retourne le nombre de lignes de la Grille
size_t get_rows() const {return nb_rows;} size_t get_rows() const {return nb_rows;}
//! \brief Retourne le nombre de colonnes
//! \return Retourne le nombre de colonnes de la Grille
size_t get_col() const{return nb_col;} size_t get_col() const{return nb_col;}
//! \brief Initialise la cellule de coordonnée pos à l'état 'state'
void set_cell(Coord pos, unsigned int state) void set_cell(Coord pos, unsigned int state)
{ {
int i = pos.y; int i = pos.y;
...@@ -42,6 +56,9 @@ public: ...@@ -42,6 +56,9 @@ public:
+((j%nb_col+nb_col)%nb_col)] +((j%nb_col+nb_col)%nb_col)]
=state; =state;
} }
//! \brief Retourne l'état d'une cellule
//! \return Retourne l'état d'une cellule de coordonnées pos
unsigned int get_state(Coord pos)const{ unsigned int get_state(Coord pos)const{
int i = pos.y; int i = pos.y;
int j = pos.x; int j = pos.x;
......
...@@ -27,22 +27,42 @@ public: ...@@ -27,22 +27,42 @@ public:
return _msg.c_str(); return _msg.c_str();
} }
}; };
/**
\struct History
\brief Représente l'historique des grilles.
Cette structure représente l'historique des grilles.
**/
class History{ class History{
unsigned int nbMax; unsigned int nbMax;
std::deque<Grid> tab; std::deque<Grid> tab;
public: public:
//! \brief Constructeur par défaut, génère un historique capable de stocker un nombre max de grilles.
History(unsigned int nbM); History(unsigned int nbM);
//! \brief Accesseur sur le nombre max
//! \return Retourne le nombre de lignes de la Grille
unsigned int get_nbMax()const{return nbMax;} unsigned int get_nbMax()const{return nbMax;}
//! \brief Ajoute une grille dans l'historique
void pushGrid(const Grid& g); void pushGrid(const Grid& g);
//! \brief Fonction qui retire la dernière grille de l'historique, et la renvoie
//! \return Retourne la dernière grille ajoutée de l'historique
Grid popGrid(); Grid popGrid();
//! \brief Fonction qui retourne la dernière grille sans la retirer
//! \return Retourne la dernière grille ajoutée de l'historique
Grid topGrid() Grid topGrid()
{ {
if(tab.size()>0) if(tab.size()>0)
return tab.back(); return tab.back();
throw HistoryException("La pile est vide. \n"); throw HistoryException("La pile est vide. \n");
} }
//! \brief Fonction qui vérifie si l'historique est vide ou pas
//! \return Retourne un booléen selon si le prédicat "l'historique est vide"
bool isEmpty() bool isEmpty()
{ {
return tab.empty(); return tab.empty();
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment