Mylloon
feb473514d
- 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
78 lines
1.7 KiB
C++
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;
|
|
}
|