Ajouts et modifications
- Supprime la méthode animal (remplacé par dynamic_cast) - Ajoute la métode action() qui définit le comportement de chaque organisme - Lance l'action de chaque organisme à chaque tour
This commit is contained in:
parent
7ef27412ad
commit
2205f3b15e
13 changed files with 29 additions and 20 deletions
|
@ -39,9 +39,6 @@ class Animal: public Organisme {
|
|||
|
||||
virtual ~Animal(void);
|
||||
|
||||
// Renvoie vrai
|
||||
bool animal(void) const noexcept;
|
||||
|
||||
// Animal carnivore ?
|
||||
virtual bool carnivore(void) const noexcept = 0;
|
||||
};
|
||||
|
|
|
@ -13,8 +13,8 @@ class Herbe: public Organisme {
|
|||
// ID de l'univers
|
||||
Herbe(int);
|
||||
|
||||
// Renvoie faux
|
||||
bool animal(void) const noexcept;
|
||||
// Définit le comportement de l'herbe
|
||||
void action(void);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -20,6 +20,9 @@ class Loup: public Animal {
|
|||
|
||||
// Renvoie vrai
|
||||
bool carnivore(void) const noexcept;
|
||||
|
||||
// Définit le comportement du loup
|
||||
void action(void);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -18,6 +18,9 @@ class Mouton: public Animal {
|
|||
|
||||
// Renvoie faux
|
||||
bool carnivore(void) const noexcept;
|
||||
|
||||
// Définit le comportement du mouton
|
||||
void action(void);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -34,8 +34,8 @@ class Organisme {
|
|||
// Renvoie la lettre correspondant à l'ID
|
||||
static char lettre(int) noexcept;
|
||||
|
||||
// Renvoie vrai si l'organisme est un animal
|
||||
virtual bool animal(void) const noexcept = 0;
|
||||
// Définit le comportement de l'organisme
|
||||
virtual void action(void) = 0;
|
||||
|
||||
// Renvoie les positions exact de l'organisme dans l'univers
|
||||
std::pair<int, std::pair<int, int>> position(int) const noexcept;
|
||||
|
|
|
@ -13,8 +13,8 @@ class Sel: public Organisme {
|
|||
// ID de l'univers
|
||||
Sel(int);
|
||||
|
||||
// Renvoie faux
|
||||
bool animal(void) const noexcept;
|
||||
// Définit le comportement du sel
|
||||
void action(void);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -13,7 +13,3 @@ Animal::Animal(const int univers_ID, const int age_max,
|
|||
vitesse(p_vitesse) { }
|
||||
|
||||
Animal::~Animal(void) { }
|
||||
|
||||
bool Animal::animal(void) const noexcept {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -147,10 +147,20 @@ void Evenement::affichage(Univers * univers, const bool traits) noexcept {
|
|||
void Evenement::lancerSimulation(Univers * univers) {
|
||||
std::cout << "Lancement de la simulation pour l'univers n°" << univers->ID << "..." << std::endl;
|
||||
|
||||
// A chaque tour de l'univers, on trie les organismes en fonction de leur vitesse
|
||||
// pour déterminer l'ordre des actions, puis chaque organisme fait une action
|
||||
// A la fin de chaque tour, on incrémente de 1 le nombre de tours
|
||||
while(univers->enVie()) {
|
||||
// On trie les organismes en fonction de leur vitesse
|
||||
std::sort(univers->m_liste_univers[univers->ID].second.begin(), univers->m_liste_univers[univers->ID].second.end(), comp_organisme());
|
||||
|
||||
// Pour tout les organismes de notre univers
|
||||
for(auto it: univers->m_liste_univers[univers->ID].second) {
|
||||
it->action(); // Fais ce qu'il a à faire pendant son tour
|
||||
}
|
||||
|
||||
// Incrémente le nombre de tours
|
||||
++univers->m_tour;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,4 @@ Herbe::Herbe(const int univers_ID): Organisme(univers_ID) {
|
|||
m_correspondance[ID] = _m_lettre;
|
||||
}
|
||||
|
||||
bool Herbe::animal(void) const noexcept {
|
||||
return false;
|
||||
}
|
||||
void Herbe::action(void) { }
|
||||
|
|
|
@ -21,3 +21,5 @@ int Loup::generationVitesse(void) const noexcept {
|
|||
bool Loup::carnivore(void) const noexcept {
|
||||
return true;
|
||||
}
|
||||
|
||||
void Loup::action(void) { }
|
||||
|
|
|
@ -19,3 +19,5 @@ int Mouton::generationVitesse(void) const noexcept {
|
|||
bool Mouton::carnivore(void) const noexcept {
|
||||
return false;
|
||||
}
|
||||
|
||||
void Mouton::action(void) { }
|
||||
|
|
|
@ -8,6 +8,4 @@ Sel::Sel(const int univers_ID): Organisme(univers_ID) {
|
|||
m_correspondance[ID] = _m_lettre;
|
||||
}
|
||||
|
||||
bool Sel::animal(void) const noexcept {
|
||||
return false;
|
||||
}
|
||||
void Sel::action(void) { }
|
||||
|
|
|
@ -39,7 +39,7 @@ void Univers::melange(std::vector<int> * vecteur) {
|
|||
|
||||
bool Univers::enVie(void) const noexcept {
|
||||
for(auto organisme: m_liste_univers[ID].second) { // on parcours les organismes de notre univers
|
||||
if(organisme->animal()) { // si on a un animal
|
||||
if(dynamic_cast<Animal *>(organisme)) { // si c'est un animal
|
||||
return true; // renvoie true
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue