diff --git a/includes/sel.hpp b/includes/sel.hpp index 5117f58..a9740bc 100644 --- a/includes/sel.hpp +++ b/includes/sel.hpp @@ -1,11 +1,14 @@ #ifndef ECOSYSTEME_SEL_HPP #define ECOSYSTEME_SEL_HPP 1 + #include "organisme.hpp" class Sel: public Organisme { const char _m_lettre = '-'; // caractère représentant le sel + int m_age = 0; + public: // ID de l'univers, index dans l'univers Sel(int, int); @@ -13,7 +16,10 @@ class Sel: public Organisme { // ID de l'univers Sel(int); - // Définit le comportement du sel + // Remplace le sel par de l'herbe + ~Sel(void); + + // Définit le comportement du sel à chaque tour void action(void); }; diff --git a/src/sel.cpp b/src/sel.cpp index 1a676a8..3d7828f 100644 --- a/src/sel.cpp +++ b/src/sel.cpp @@ -1,4 +1,5 @@ #include "../includes/sel.hpp" +#include "../includes/univers.hpp" Sel::Sel(const int univers_ID, const int index): Organisme(univers_ID, index) { m_correspondance[ID] = _m_lettre; @@ -8,4 +9,23 @@ Sel::Sel(const int univers_ID): Organisme(univers_ID) { m_correspondance[ID] = _m_lettre; } -void Sel::action(void) { } +Sel::~Sel(void) { + // On se supprime du vecteur + auto debut = Univers::m_liste_univers[m_univers_ID].second.begin(); + auto fin = Univers::m_liste_univers[m_univers_ID].second.end(); + auto it = std::find(debut, fin, this); + if(it != fin) { + Univers::m_liste_univers[m_univers_ID].second.erase(it); + } + + // On ajoute une herbe à la place + new Herbe(m_univers_ID, m_index); +} + +void Sel::action(void) { + if(m_age == 1) { // devient de l'herbe au bout d'un tour + delete this; + } else { + ++m_age; + } +}