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/univers.hpp

48 lines
1.5 KiB
C++
Raw Normal View History

#ifndef ECOSYSTEME_UNIVERS_HPP
#define ECOSYSTEME_UNIVERS_HPP 1
#include <algorithm>
2022-04-12 09:57:20 +02:00
#include <random>
2022-04-06 00:12:56 +02:00
#include "herbe.hpp"
class Univers {
2022-03-31 16:09:34 +02:00
friend class Organisme;
friend class Evenement;
2022-03-31 16:09:34 +02:00
const int m_longueur, m_largeur, m_taille_univers; // dimensions de l'univers
int m_tour; // âge de l'univers
inline static int m_total_ID; // s'incrémente à chaque création d'univers
// Mélange le contenu d'un vecteur
2022-04-12 10:46:04 +02:00
static void melange(std::vector<int> * vecteur) noexcept;
public:
2022-04-11 00:47:27 +02:00
// Stocke pour chaque ID d'univers les dimensions de l'univers (largeur, longueur)
inline static std::map<int, std::pair<int, int>> m_dimensions_univers;
// Stocke pour chaque ID d'univers les organismes présent dans l'univers
2022-04-12 10:46:04 +02:00
inline static std::map<int, std::vector<Organisme *>> m_organismes_univers;
// Stocke pour chaque ID d'univers les index libres
// first => organismes qui peuvent se superposer (herbe, sel...)
// second => organismes qui ne le peuvent pas (animaux)
inline static std::map<int, std::pair<std::vector<int>, std::vector<int>>> m_index_libres_univers;
const int ID; // ID unique pour chaque univers
// longueur, largeur
Univers(int, int);
~Univers(void);
// Vérifie s'il y a de la vie dans l'univers
bool enVie(void) const noexcept;
// Supprime les organismes mort du vecteur qui les stockes
void nettoyageMorts(void) noexcept;
};
#endif