Verified Commit 2211d3f6 authored by Romain De Laage De Bellefaye's avatar Romain De Laage De Bellefaye 🌳
Browse files

Finish Functions and Rules

parent 9aff537e
......@@ -54,3 +54,54 @@ const Etat& FonctionAvecEtatCourant::getEtatSuivant(const Voisinage& voisins, co
return etatDefaut;
}
void Fonction::ajouterRegle(const Etat& destination, const int seuilsMax[8], const int seuilsMax[8]) {
Regle** nouveau = new *Regles[nbRegles + 1];
for(int i = 0; i < nbRegles; ++i)
nouveau[i] = regles[i];
nouveau[nbRegles] = new Regle(destination, seuilsMax, seuilsMax);
++nbRegles;
delete[] regles;
regles = nouveau;
}
void FonctionAvecEtatCourant::ajouterRegle(const Etat& destination, const int seuilsMax[8], const int seuilsMax[8], const Cellule& cellule) {
RegleAvecEtatCourant** nouveau = new *ReglesAvecEtatCourant[nbRegles + 1];
for(int i = 0; i < nbRegles; ++i)
nouveau[i] = regles[i];
nouveau[nbRegles] = new RegleAvecEtatCourant(destination, seuilsMax, seuilsMax, cellule);
++nbRegles;
delete[] regles;
regles = nouveau;
}
Fonction::~Fonction() {
for(int i = 0; i < nbRegles; ++i)
delete regles[i];
delete[] regles;
}
FonctionAvecEtatCourant::~FonctionAvecEtatCourant() {
for(int i = 0; i < nbRegles; ++i)
delete regles[i];
delete[] regles;
}
Regle::Regle(const Etat& nDestination, const int nSeuilsMax[8], const int nSeuilsMax[8]): destination(dest) {
for(int i = 0; i < 8; ++i)
seuilsMin[i] = nSeuilsMin[i];
for(int i = 0; i < 8; ++i)
seuilsMax[i] = nSeuilsMax[i];
}
RegleAvecEtatCourant::RegleAvecEtatCourant(const Etat& nDestination, const int nSeuilsMax[8], const int nSeuilsMax[8], const Cellule& cellule) {
Regle(nDestination, nSeuilsMin, nSeuilsMax);
etatCourant = cellule.getEtat;
}
......@@ -8,6 +8,7 @@ class Regle {
Etat destination;
public:
Regle(const Etat& nDestination, const int nSeuilsMax[8], const int nSeuilsMax[8]);
const Etat& getDestination() const { return destination; }
bool verify(const Voisinage& voisins) const;
};
......@@ -17,6 +18,7 @@ class RegleAvecEtatCourant: public Regle {
Etat etatCourant;
public:
RegleAvecEtatCourant(const Etat& nDestination, const int nSeuilsMax[8], const int nSeuilsMax[8], const Cellule& cellule);
bool verify(const Voisinage& voisins, const Cellule& cellule) const;
};
......@@ -24,13 +26,14 @@ class Fonction {
private:
Etat etatDefaut;
Regle** regles;
int nbRegles;
public:
Fonction();
Fonction(const Etat& etat):regles(nullptr),nbRegles(0),etatDefaut(etat){}
~Fonction();
const Etat& getEtatDefaut() const { return etatDefaut; }
void setEtatDefaut(const Etat& nouveau) { etatDefaut = nouveau; }
void ajouterRegle(const Etat& destination, const int seuils[8]);
void ajouterRegle(const Etat& destination, const int seuilsMin[8], const int seuilsMax[8]);
const Etat& getEtatSuivant(const Voisinage& voisins) const;
};
......@@ -38,13 +41,14 @@ class FonctionAvecEtatCourant {
private:
Etat etatDefaut;
RegleAvecEtatCourant** regles;
int nbRegles;
public:
FonctionAvecEtatCourant();
FonctionAvecEtatCourant():regles(nullptr),nbRegles(0),etatDefaut(etat){}
~FonctionAvecEtatCourant();
const Etat& getEtatDefaut() const { return etatDefaut; }
void setEtatDefaut(const Etat& nouveau) { etatDefaut = nouveau; }
void ajouterRegle(const Etat& destination, const int seuils[8], const Etat& courant);
void ajouterRegle(const Etat& destination, const int seuilsMin[8], const int seuilsMax[8], const Etat& courant);
const Etat& getEtatSuivant(const Voisinage& voisins, const Cellule& cellule) const;
};
......
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