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/univers.cpp
Mylloon feb473514d
Ajouts
- Univers garde le nombre d'organismes, et ceux en vie
- Chaque organisme a un ID
- Plateau par défaut remplie d'herbe
- Ajoute les organismes dans l'univers via un vecteur, gestion du nombre d'organismes max
2022-04-02 00:46:38 +02:00

78 lines
1.7 KiB
C++

#include "univers.hpp"
// -------- Univers --------
Univers::Univers(int m, int n): _m(m), _n(n), _tour(0) {
_plateau = new int[m * n](); // initialise toutes les valeurs du tableau à 0
}
Univers::~Univers(void) {
delete[] _plateau;
}
void Univers::ajoutOrganismes(std::vector<Organisme*> organismes) {
const uint64_t tailleUnivers = _m * _n,
tailleMaxUnivers = tailleUnivers - tailleUnivers / 4,
nbOrganismesFinales = _nbOrganisme + organismes.size();
if(organismes.size() + _nbOrganisme > tailleMaxUnivers)
throw std::domain_error("Trop d'organismes pour l'univers.");
/* std::cout << "tailleUnivers : " << tailleUnivers << std::endl;
std::cout << "tailleMaxUnivers : " << tailleMaxUnivers << std::endl;
std::cout << "organismes.size() : " << organismes.size() << std::endl; */
for(uint64_t i = _nbOrganisme, j; i < nbOrganismesFinales;) {
j = rand() % tailleUnivers; // case aléatoire
if(_plateau[j] == 0) { // si on est sur de l'herbe
_plateau[j] = organismes.back()->id(); // on place notre organisme
organismes.pop_back(); // on le retire du vecteur
i++;
}
}
_nbOrganisme = nbOrganismesFinales;
}
bool Univers::enVie(void) {
return _nbOrganismesEnVie > 0;
}
// -------- Organisme --------
Organisme::Organisme(void) {
}
// -------- Animal --------
Animal::Animal(void): Organisme() {
}
// -------- Mouton --------
Mouton::Mouton(void): Animal() {
}
bool Mouton::carnivore(void) {
return false;
}
int Mouton::id(void) {
return 2;
}
// -------- Loup --------
Loup::Loup(void): Animal() {
}
bool Loup::carnivore(void) {
return false;
}
int Loup::id(void) {
return 3;
}