Commit 2b464a26 authored by Eugene Pin's avatar Eugene Pin
Browse files

Update #7

parent 62c05886
Pipeline #76604 passed with stages
in 17 seconds
......@@ -5,7 +5,7 @@
\version 1
\brief Neighborhood
Cette classe représente le voisinage d'une cellule.
Cette classe représente le voisinage d'une cellule.
**/
......@@ -15,41 +15,37 @@ Cette classe représente le voisinage d'une cellule.
#include <vector>
#include <utility>
#include "coord.hpp"
using namespace std;
class Coord;
class State;
/**
\struct Neighbor
\brief Représente une coordonnée avec un état
Cette structure représente une coordonnée de format (x, y) et un état.\n
Cette strucuture permet d'identifier un voisin d'une cellule. coord correspond à la position relative par rapport à la cellule.
struct Neighbor
{
pair<Coord, State>
};
**/
class Neighborhood {
//std::vector<Neighbor> neighborPositions;
//! \brief Vecteur de voisins contenant la position relative et l'état du voisin
vector< pair<Coord, State> > neighborPositions;
public:
//! \brief Retourne le nombre de voisin ayant la classe définit en paramètre
//! \brief Retourne le nombre de voisin ayant l'état définit en paramètre
//! \param State : Etat des voisins à rechercher
//! \return Le nombre de voisin
unsigned int getNb(State state);
//! \brief Retourne l'état de la cellule voisine située à la coordonnée relative entrée en paramètre
//! \param Coordonnée du voisin à trouver
//! \return L'état de la cellule
State getAt(Coord c);
void setNeighborPositions(Coord c, State s) {
neighborPositions.push_back(make_pair(c, s));
//! \brief Ajoute un voisin au vecteur des voisins. Prend une coordonnée et un état en paramètre
//! \param Coord, State : coordonée relative et état du voisin
void addNeighbor(Coord c, State s) {
if(isUnique(c))
neighborPositions.push_back(make_pair(c, s));
}
//! \brief Fonction vérifiant que la coordonnée d'un voisin que l'on souhaite ajouter dans le vecteur neighborPositions est unique
//! \param Coord : Coordonnée à comparer
//! \return retourne vrai si la coordonnée est unique sinon faux s'il existe un doublon
bool Neighborhood::isUnique(Coord c);
};
#endif // NEIGHBOURHOOD_HPP
#endif // NEIGHBOURHOOD_HPP
\ No newline at end of file
......@@ -23,5 +23,18 @@ State Neighborhood::getAt(Coord c)
}
}
return ERROR;
throw "Error Neighborhood::getAt";
//return ERROR;
}
bool Neighborhood::isUnique(Coord c)
{
std::vector< pair<Coord, State> >::iterator it;
for (it = neighborPositions.begin(); it != neighborPositions.end(); ++it) {
if (it->first == c) {
return false;
}
}
return true;
}
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