diff --git a/includes/organisme.hpp b/includes/organisme.hpp index 32d2ed6..3b3b655 100644 --- a/includes/organisme.hpp +++ b/includes/organisme.hpp @@ -4,19 +4,29 @@ #include class Organisme { + inline static int __totalID; // permet d'incrémenter de 1 l'ID de chaque animal + protected: + const int _universID; // stocke l'ID de l'univers où l'organisme est présent + + /* stocke la table des correspondances, + * chaque organisme possède un ID unique et est + * représenté par une lettre, cette association est + * réalisé dans cette map */ static inline std::map _correspondance; + int x, y; // Location dans l'univers + public: - Organisme(void); + const int ID; // ID unique pour chaque animal - /* Renvoie l'ID de l'organisme - * Si `ID < 0` -> non vivant - * Si `ID > 0` -> vivant - * Si `ID == 0` -> Herbe */ - virtual short id(void) const noexcept = 0; + Organisme(int, int, int); - static char correspondance(int); + // 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; }; #endif diff --git a/src/organisme.cpp b/src/organisme.cpp index 326f358..8385cd7 100644 --- a/src/organisme.cpp +++ b/src/organisme.cpp @@ -1,7 +1,13 @@ +#include "../includes/univers.hpp" #include "../includes/organisme.hpp" -Organisme::Organisme(void) { } - -char Organisme::correspondance(int id) { - return _correspondance[id]; +Organisme::Organisme(int universID, int x, int y): _universID(universID), x(x), y(y), ID(__totalID + 1) { + __totalID = ID; // + 1 aux ID + Univers::listeUnivers[_universID].second.push_back(this); +} + +char Organisme::lettre(int id) noexcept { + if(_correspondance[id]) + return _correspondance[id]; + return ' '; }