#ifndef ECOSYSTEME_ORGANISME_HPP
#define ECOSYSTEME_ORGANISME_HPP 1
#include <map>
class Organisme {
inline static int m_total_ID; // permet d'incrémenter de 1 l'ID de chaque organisme
protected:
const int m_univers_ID; // 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<int, char> m_correspondance;
int m_index; // Location dans l'univers
// Renvoie un index libre
int recuperationIndexLibre(const int);
public:
const int ID; // ID unique pour chaque organisme
// ID de l'Univers, index dans l'univers
Organisme(const int, const int);
// ID de l'Univers (index aléatoire)
Organisme(const int);
virtual ~Organisme(void);
// Renvoie la lettre correspondant à l'ID
static char lettre(const int) noexcept;
// Renvoie vrai si l'organisme est un animal
virtual bool animal(void) const noexcept = 0;
// Renvoie les positions exact de l'organisme dans l'univers
std::pair<int, std::pair<int, int>> position(const int) const noexcept;
};
#endif