#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 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; }