Verified Commit 58e0bc2d authored by Romain De Laage De Bellefaye's avatar Romain De Laage De Bellefaye 🌳
Browse files

Correct a few mistakes

parent 0739b0fe
......@@ -22,8 +22,7 @@ class Automate {
unsigned int l;
bool isRunning;
Automate(): delai(500), fonction(nullptr), regleVoisinage(nullptr), itBuffer(buffer.begin()), h(0), l(0), isRunning(false), title("") {} //modifié
~Automate() = default;
Automate(): delai(500), fonction(nullptr), regleVoisinage(nullptr), itBuffer(buffer.begin()), h(0), l(0), isRunning(false), title("") { timer.automate = this; }
Automate(const Automate& a) = delete;
Automate& operator=(const Automate& a) = delete;
std::string getTitle() const { return title; }
......@@ -32,7 +31,7 @@ class Automate {
private:
int timerID;
Automate *automate;
Timer(Automate *a): timerID(0), automate(a) {}
Timer(): timerID(0) {}
~Timer() { destroy(); }
protected:
......@@ -54,9 +53,10 @@ class Automate {
friend class Automate;
};
Timer timer(this);
Timer timer;
public:
~Automate() = default;
/// récupérer une référence sur l'instance unique du singleton Automate
static Automate& getInstance() {
if(instance == nullptr) {
......
......@@ -90,8 +90,8 @@ class RegleVoisinageArbitraire : public RegleVoisinage { //définit la règle po
void setNbVoisins(unsigned int r) { nbVoisin = r; }
unsigned int getNbVoisin() { return nbVoisin; }
vector<Coordonnees> coordonnees;
void calculVoisinage(Voisinage& v, const Reseau& r, const Coordonnees co) const; // Calcul du voisinage en fonction de la cellule centre
Coordonnees getVoisinage(const Reseau& r); // Dééfinition des coordonnées relatives pour le calcul du voisinage
void calculVoisinage(Voisinage& v, const Reseau& r) const; // Calcul du voisinage en fonction de la cellule centre
// Coordonnees getVoisinage(const Reseau& r); // Dééfinition des coordonnées relatives pour le calcul du voisinage
};
#endif /* voisinage_h */
......@@ -13,36 +13,36 @@ void Voisinage::setr(unsigned int rayon){
void RegleVoisinageNeumann::calculVoisinage(Voisinage& v, const Reseau& r) {
v.voisinage = std::vector<Cellule*>();
int nb = 0;
unsigned int abs = v.celluleCentre->abs;
unsigned int ord = v.celluleCentre->ord;
unsigned int cellX = v.celluleCentre->abs;
unsigned int cellY = v.celluleCentre->ord;
unsigned int hauteur = r.getHauteur();
unsigned int largeur = r.getLargeur();
for (int i = -v.r; i <= v.r; i++)
for (int j = -v.r; j <= v.r; j++)
if (abs(i) + abs(j) <= v.r && i != 0 && j != 0)
v.voisinage.push_back(&r.getReseau()[(abs+i)%hauteur][(ord+j)%largeur]);
v.voisinage.push_back(&r.getReseau()[(cellY+i)%hauteur][(cellX+j)%largeur]);
}
void RegleVoisinageMoore::calculVoisinage(Voisinage& v, const Reseau& r) {
v.voisinage = std::vector<Cellule*>();
int nb = 0;
unsigned int abs = v.celluleCentre->abs;
unsigned int ord = v.celluleCentre->ord;
unsigned int cellX = v.celluleCentre->abs;
unsigned int cellY = v.celluleCentre->ord;
unsigned int hauteur = r.getHauteur();
unsigned int largeur = r.getLargeur();
for (int i = -v.r; i <= v.r; i++)
for (int j = -v.r; j <= v.r; j++)
if (abs(i) <= v.r && abs(j) <= v.r && i != 0 && j != 0)
v.voisinage.push_back(&r.getReseau()[(abs+i)%hauteur][(ord+j)%largeur]);
v.voisinage.push_back(&r.getReseau()[(cellY+i)%hauteur][(cellX+j)%largeur]);
}
Voisinage::~Voisinage() {
voisinage.clear();
}
void RegleVoisinageArbitraire::calculVoisinage(Voisinage &v, const Reseau& r) { //définir get?
void RegleVoisinageArbitraire::calculVoisinage(Voisinage &v, const Reseau& r) const { //définir get?
v.voisinage = std::vector<Cellule*>();
unsigned int abs = v.celluleCentre->abs;
......@@ -51,37 +51,37 @@ void RegleVoisinageArbitraire::calculVoisinage(Voisinage &v, const Reseau& r) {
unsigned int largeur = r.getLargeur();
for (int nb = 0; nb < coordonnees.size(); nb++){
v.voisinage[nb] = &r.getReseau()[abs - coordonnees[nb].getx()] [ord - coordonnees[nb].gety()];
v.voisinage[nb] = &r.getReseau()[abs - coordonnees[nb].x] [ord - coordonnees[nb].y];
}
}
Coordonnees RegleVoisinageArbitraire::getVoisinage(const Reseau& r) {
vector<Coordonnees> coordonnees;
Cellule* cellulecentre = getCelluleCentre();
for (int k = 0; k < nbVoisin; k++) {
unsigned int i, j;
while (i >= r.getHauteur() || j >= r.getLargeur()) {
cout << "Entrez l'abscisse de la" << k << "ieme cellule.\n";
cin >> i;
cout << "Entrez l'ordonnee de la " << k << "ieme cellule.\n";
cin >> j;
if (i >= r.getHauteur() || j >= r.getLargeur())
cout << "Coordonnees incorrectes !\n";
}
if (i < r.getHauteur() && j < r.getLargeur()) {
coordonnees[k].x = cellulecentre->abs - i;
coordonnees[k].y = cellulecentre->ord - j;
}
}
return coordonnees;
// While (!utilisateur clique sur bouton valider){
//recuprer abs et ord de Cellule slectionne;
//rentrer la diffrence des coordonnes dans le vecteur co
//}
}
//Coordonnees RegleVoisinageArbitraire::getVoisinage(const Reseau& r) {
//
// vector<Coordonnees> coordonnees;
//
// Cellule* cellulecentre = celluleCentre;
//
//
// for (int k = 0; k < nbVoisin; k++) {
// unsigned int i, j;
// while (i >= r.getHauteur() || j >= r.getLargeur()) {
// cout << "Entrez l'abscisse de la" << k << "ieme cellule.\n";
// cin >> i;
// cout << "Entrez l'ordonnee de la " << k << "ieme cellule.\n";
// cin >> j;
// if (i >= r.getHauteur() || j >= r.getLargeur())
// cout << "Coordonnees incorrectes !\n";
// }
// if (i < r.getHauteur() && j < r.getLargeur()) {
// coordonnees[k].x = cellulecentre->abs - i;
// coordonnees[k].y = cellulecentre->ord - j;
// }
// }
//
// return coordonnees;
// // While (!utilisateur clique sur bouton valider){
// //recuprer abs et ord de Cellule slectionne;
// //rentrer la diffrence des coordonnes dans le vecteur co
// //}
//
//}
Markdown is supported
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