diff --git a/includes/animal.hpp b/includes/animal.hpp index f94cc74..0ad253c 100644 --- a/includes/animal.hpp +++ b/includes/animal.hpp @@ -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; }; diff --git a/includes/herbe.hpp b/includes/herbe.hpp index 514a726..c49837f 100644 --- a/includes/herbe.hpp +++ b/includes/herbe.hpp @@ -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 diff --git a/includes/loup.hpp b/includes/loup.hpp index 7c7e10f..97cd3eb 100644 --- a/includes/loup.hpp +++ b/includes/loup.hpp @@ -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 diff --git a/includes/mouton.hpp b/includes/mouton.hpp index 0c07bcd..c0449bb 100644 --- a/includes/mouton.hpp +++ b/includes/mouton.hpp @@ -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 diff --git a/includes/organisme.hpp b/includes/organisme.hpp index 667b7e7..67723d1 100644 --- a/includes/organisme.hpp +++ b/includes/organisme.hpp @@ -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> position(int) const noexcept; diff --git a/includes/sel.hpp b/includes/sel.hpp index 2c98956..5117f58 100644 --- a/includes/sel.hpp +++ b/includes/sel.hpp @@ -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 diff --git a/src/animal.cpp b/src/animal.cpp index 23d6a65..914a396 100644 --- a/src/animal.cpp +++ b/src/animal.cpp @@ -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; -} diff --git a/src/evenement.cpp b/src/evenement.cpp index 531442e..93a8938 100644 --- a/src/evenement.cpp +++ b/src/evenement.cpp @@ -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; } diff --git a/src/herbe.cpp b/src/herbe.cpp index 4c58324..bbf3384 100644 --- a/src/herbe.cpp +++ b/src/herbe.cpp @@ -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) { } diff --git a/src/loup.cpp b/src/loup.cpp index e964f1a..ce1d7e9 100644 --- a/src/loup.cpp +++ b/src/loup.cpp @@ -21,3 +21,5 @@ int Loup::generationVitesse(void) const noexcept { bool Loup::carnivore(void) const noexcept { return true; } + +void Loup::action(void) { } diff --git a/src/mouton.cpp b/src/mouton.cpp index 90cdfa5..c106c14 100644 --- a/src/mouton.cpp +++ b/src/mouton.cpp @@ -19,3 +19,5 @@ int Mouton::generationVitesse(void) const noexcept { bool Mouton::carnivore(void) const noexcept { return false; } + +void Mouton::action(void) { } diff --git a/src/sel.cpp b/src/sel.cpp index 67660c8..1a676a8 100644 --- a/src/sel.cpp +++ b/src/sel.cpp @@ -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) { } diff --git a/src/univers.cpp b/src/univers.cpp index e030a13..2020c34 100644 --- a/src/univers.cpp +++ b/src/univers.cpp @@ -39,7 +39,7 @@ void Univers::melange(std::vector * 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(organisme)) { // si c'est un animal return true; // renvoie true } }