From d2586b62d2bbf2bd3749fd8a4b8f1c0ab4d50c9b Mon Sep 17 00:00:00 2001 From: Mylloon Date: Sun, 10 Apr 2022 18:03:31 +0200 Subject: [PATCH] =?UTF-8?q?D=C3=A9finition=20comportement=20Sel=20+=20dest?= =?UTF-8?q?ructeur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- includes/sel.hpp | 8 +++++++- src/sel.cpp | 22 +++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) 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; + } +}