Ajouts et modifications

- Initialise le plateau avec l'ID de l'herbe
- Affiche le caractère correspondant à l'ID au lieu de l'ID et supprime les bordures intérieur
- map des ID<->Lettre stocké dans la classe Organisme, lettre ajoutés lors de la construction de la classe correspondante
This commit is contained in:
Mylloon 2022-04-02 18:12:19 +02:00
parent 258c3eecf7
commit 04921a7a38
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
2 changed files with 31 additions and 23 deletions

View file

@ -3,7 +3,11 @@
// -------- Univers -------- // -------- Univers --------
Univers::Univers(int m, int n): _m(m), _n(n), _tailleUnivers(m * n), _tour(0), _nbAnimaux(0) { Univers::Univers(int m, int n): _m(m), _n(n), _tailleUnivers(m * n), _tour(0), _nbAnimaux(0) {
_plateau = new int[m * n](); // initialise toutes les valeurs du tableau à 0 _plateau = new int[_tailleUnivers];
// Remplie toutes les valeurs du tableau avec l'ID de l'herbe
Herbe herbe;
std::fill_n(_plateau, _tailleUnivers, herbe.id());
// On ajoute tous les index possibles // On ajoute tous les index possibles
for(int i = 0; i < _tailleUnivers; i++) for(int i = 0; i < _tailleUnivers; i++)
@ -61,7 +65,7 @@ void Univers::modificationOrganisme(Organisme * organisme, int index) {
} }
void Univers::affichage(void) const noexcept { void Univers::affichage(void) const noexcept {
for(int i = 0; i < _n * 5; i++) for(int i = 0; i < _n * 4; i++)
if(i == 0) if(i == 0)
std::cout << ""; std::cout << "";
else else
@ -70,13 +74,18 @@ void Univers::affichage(void) const noexcept {
std::cout << ""; std::cout << "";
for(int i = 0; i < _tailleUnivers; i += _n) { for(int i = 0; i < _tailleUnivers; i += _n) {
for(int j = 0; j < _n; j++) for(int j = 0; j < _n; j++) {
printf("%2d │ ", _plateau[i + j]); std::cout << Organisme::correspondance(_plateau[i + j]);
if(j == _n - 1)
std::cout << "";
else
std::cout << " ";
}
if(i != _tailleUnivers - _n) std::cout << std::endl << ""; if(i != _tailleUnivers - _n) std::cout << std::endl << "";
} }
std::cout << std::endl; std::cout << std::endl;
for(int i = 0; i < _n * 5; i++) for(int i = 0; i < _n * 4; i++)
if(i == 0) if(i == 0)
std::cout << ""; std::cout << "";
else else
@ -91,25 +100,22 @@ bool Univers::enVie(void) const noexcept {
// -------- Organisme -------- // -------- Organisme --------
Organisme::Organisme(void) { Organisme::Organisme(void) { }
char Organisme::correspondance(int id) {
return _correspondance[id];
} }
// -------- Animal -------- // -------- Animal --------
Animal::Animal(void): Organisme() { Animal::Animal(void): Organisme() { }
} Animal::~Animal(void) { }
Animal::~Animal(void) {
}
// -------- Herbe -------- // -------- Herbe --------
Herbe::Herbe(void): Organisme() { Herbe::Herbe(void): Organisme() {
_correspondance[id()] = ' ';
} }
short Herbe::id(void) const noexcept { short Herbe::id(void) const noexcept {
@ -120,7 +126,7 @@ short Herbe::id(void) const noexcept {
// -------- Sel -------- // -------- Sel --------
Sel::Sel(void): Organisme() { Sel::Sel(void): Organisme() {
_correspondance[id()] = 'S';
} }
short Sel::id(void) const noexcept { short Sel::id(void) const noexcept {
@ -131,12 +137,10 @@ short Sel::id(void) const noexcept {
// -------- Mouton -------- // -------- Mouton --------
Mouton::Mouton(void): Animal() { Mouton::Mouton(void): Animal() {
_correspondance[id()] = 'M';
} }
Mouton::~Mouton(void) { Mouton::~Mouton(void) { }
}
bool Mouton::carnivore(void) const noexcept { bool Mouton::carnivore(void) const noexcept {
return false; return false;
@ -150,12 +154,10 @@ short Mouton::id(void) const noexcept {
// -------- Loup -------- // -------- Loup --------
Loup::Loup(void): Animal() { Loup::Loup(void): Animal() {
_correspondance[id()] = 'L';
} }
Loup::~Loup(void) { Loup::~Loup(void) { }
}
bool Loup::carnivore(void) const noexcept { bool Loup::carnivore(void) const noexcept {
return false; return false;

View file

@ -5,6 +5,7 @@
#include <vector> #include <vector>
#include <algorithm> #include <algorithm>
#include <random> #include <random>
#include <map>
class Organisme; class Organisme;
class Animal; class Animal;
@ -36,6 +37,9 @@ class Univers {
}; };
class Organisme { class Organisme {
protected:
static inline std::map<int, char> _correspondance;
public: public:
Organisme(void); Organisme(void);
@ -44,6 +48,8 @@ class Organisme {
* Si `ID > 0` -> vivant * Si `ID > 0` -> vivant
* Si `ID == 0` -> Herbe */ * Si `ID == 0` -> Herbe */
virtual short id(void) const noexcept = 0; virtual short id(void) const noexcept = 0;
static char correspondance(int);
}; };
class Animal: public Organisme { class Animal: public Organisme {