This repository has been archived on 2022-05-02. You can view files and clone it, but cannot push or open issues or pull requests.
Ecosysteme/includes/organisme.hpp

54 lines
1.7 KiB
C++
Raw Permalink Normal View History

#ifndef ECOSYSTEME_ORGANISME_HPP
#define ECOSYSTEME_ORGANISME_HPP 1
#include <map>
2022-04-10 22:50:56 +02:00
#include <system_error>
#include <iostream>
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
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
static inline std::map<int, char> m_correspondance;
int m_index; // Location dans l'univers
// Supprime l'organisme des vecteur
void suppresionVecteurs(void) noexcept;
public:
const int ID; // ID unique pour chaque organisme
const bool m_superposable; // Type de l'organisme
bool mort = false; // vrai si l'organisme est mort
// ID de l'Univers, type de l'organisme, index dans l'univers
Organisme(int, bool = true, int = -1);
virtual ~Organisme(void);
// Renvoie la lettre correspondant à l'ID
static char lettre(int) noexcept;
2022-04-10 16:10:25 +02:00
// Définit le comportement de l'organisme à chaque tour
virtual void action(void) = 0;
// Renvoie les positions exact de l'organisme dans l'univers donnée (index/x;y)
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;
// Fais mourir l'organisme en libérant sa position
void mortOrganisme(void) noexcept;
};
#endif