Définition comportement Sel + destructeur

This commit is contained in:
Mylloon 2022-04-10 18:03:31 +02:00
parent b217c41116
commit d2586b62d2
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
2 changed files with 28 additions and 2 deletions

View file

@ -1,11 +1,14 @@
#ifndef ECOSYSTEME_SEL_HPP #ifndef ECOSYSTEME_SEL_HPP
#define ECOSYSTEME_SEL_HPP 1 #define ECOSYSTEME_SEL_HPP 1
#include "organisme.hpp" #include "organisme.hpp"
class Sel: public Organisme { class Sel: public Organisme {
const char _m_lettre = '-'; // caractère représentant le sel const char _m_lettre = '-'; // caractère représentant le sel
int m_age = 0;
public: public:
// ID de l'univers, index dans l'univers // ID de l'univers, index dans l'univers
Sel(int, int); Sel(int, int);
@ -13,7 +16,10 @@ class Sel: public Organisme {
// ID de l'univers // ID de l'univers
Sel(int); 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); void action(void);
}; };

View file

@ -1,4 +1,5 @@
#include "../includes/sel.hpp" #include "../includes/sel.hpp"
#include "../includes/univers.hpp"
Sel::Sel(const int univers_ID, const int index): Organisme(univers_ID, index) { Sel::Sel(const int univers_ID, const int index): Organisme(univers_ID, index) {
m_correspondance[ID] = _m_lettre; m_correspondance[ID] = _m_lettre;
@ -8,4 +9,23 @@ Sel::Sel(const int univers_ID): Organisme(univers_ID) {
m_correspondance[ID] = _m_lettre; 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;
}
}