2022-04-05 18:31:10 +02:00
|
|
|
#ifndef ECOSYSTEME_ORGANISME_HPP
|
|
|
|
#define ECOSYSTEME_ORGANISME_HPP 1
|
2022-04-02 21:22:37 +02:00
|
|
|
|
|
|
|
#include <map>
|
2022-04-10 22:50:56 +02:00
|
|
|
#include <system_error>
|
2022-04-18 03:12:14 +02:00
|
|
|
#include <iostream>
|
2022-04-02 21:22:37 +02:00
|
|
|
|
|
|
|
class Organisme {
|
2022-04-05 18:26:05 +02:00
|
|
|
inline static int m_total_ID; // permet d'incrémenter de 1 l'ID de chaque organisme
|
2022-04-04 00:12:20 +02:00
|
|
|
|
2022-04-02 21:22:37 +02:00
|
|
|
protected:
|
2022-04-05 18:26:05 +02:00
|
|
|
const int m_univers_ID; // stocke l'ID de l'univers où l'organisme est présent
|
2022-04-04 00:12:20 +02:00
|
|
|
|
2022-04-06 01:05:14 +02:00
|
|
|
// 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
|
2022-04-05 18:26:05 +02:00
|
|
|
static inline std::map<int, char> m_correspondance;
|
2022-04-02 21:22:37 +02:00
|
|
|
|
2022-04-05 18:26:05 +02:00
|
|
|
int m_index; // Location dans l'univers
|
2022-04-04 00:12:20 +02:00
|
|
|
|
2022-04-13 15:31:57 +02:00
|
|
|
// Supprime l'organisme des vecteur
|
|
|
|
void suppresionVecteurs(void) noexcept;
|
2022-04-12 01:41:47 +02:00
|
|
|
|
2022-04-02 21:22:37 +02:00
|
|
|
public:
|
2022-04-04 23:21:05 +02:00
|
|
|
const int ID; // ID unique pour chaque organisme
|
2022-04-04 00:12:20 +02:00
|
|
|
|
2022-04-13 15:31:57 +02:00
|
|
|
const bool m_superposable; // Type de l'organisme
|
|
|
|
|
2022-04-12 15:08:58 +02:00
|
|
|
bool mort = false; // vrai si l'organisme est mort
|
|
|
|
|
2022-04-10 21:05:30 +02:00
|
|
|
// ID de l'Univers, type de l'organisme, index dans l'univers
|
|
|
|
Organisme(int, bool = true, int = -1);
|
2022-04-06 00:44:43 +02:00
|
|
|
|
2022-04-04 23:21:05 +02:00
|
|
|
virtual ~Organisme(void);
|
2022-04-02 21:22:37 +02:00
|
|
|
|
2022-04-04 00:12:20 +02:00
|
|
|
// Renvoie la lettre correspondant à l'ID
|
2022-04-06 12:56:17 +02:00
|
|
|
static char lettre(int) noexcept;
|
2022-04-02 21:22:37 +02:00
|
|
|
|
2022-04-10 16:10:25 +02:00
|
|
|
// Définit le comportement de l'organisme à chaque tour
|
2022-04-10 15:35:25 +02:00
|
|
|
virtual void action(void) = 0;
|
2022-04-04 23:21:05 +02:00
|
|
|
|
2022-04-18 03:12:14 +02:00
|
|
|
// Renvoie les positions exact de l'organisme dans l'univers donnée (index/x;y)
|
2022-04-11 00:47:14 +02:00
|
|
|
std::pair<int, std::pair<int, int>> position(void) const noexcept;
|
|
|
|
|
|
|
|
// Renvoie les coordonées de l'organisme en format "echequier"
|
2022-04-12 10:46:04 +02:00
|
|
|
std::string coordoneeeEchequier(void) const noexcept;
|
2022-04-13 15:31:57 +02:00
|
|
|
|
|
|
|
// Fais mourir l'organisme en libérant sa position
|
2022-04-18 11:54:12 +02:00
|
|
|
void mortOrganisme(void) noexcept;
|
2022-04-02 21:22:37 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|