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(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
for(int i = 0; i < _tailleUnivers; i++)
@ -61,7 +65,7 @@ void Univers::modificationOrganisme(Organisme * organisme, int index) {
}
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)
std::cout << "";
else
@ -70,13 +74,18 @@ void Univers::affichage(void) const noexcept {
std::cout << "";
for(int i = 0; i < _tailleUnivers; i += _n) {
for(int j = 0; j < _n; j++)
printf("%2d │ ", _plateau[i + j]);
for(int j = 0; j < _n; 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 << "";
}
std::cout << std::endl;
for(int i = 0; i < _n * 5; i++)
for(int i = 0; i < _n * 4; i++)
if(i == 0)
std::cout << "";
else
@ -91,25 +100,22 @@ bool Univers::enVie(void) const noexcept {
// -------- Organisme --------
Organisme::Organisme(void) {
Organisme::Organisme(void) { }
char Organisme::correspondance(int id) {
return _correspondance[id];
}
// -------- Animal --------
Animal::Animal(void): Organisme() {
Animal::Animal(void): Organisme() { }
}
Animal::~Animal(void) {
}
Animal::~Animal(void) { }
// -------- Herbe --------
Herbe::Herbe(void): Organisme() {
_correspondance[id()] = ' ';
}
short Herbe::id(void) const noexcept {
@ -120,7 +126,7 @@ short Herbe::id(void) const noexcept {
// -------- Sel --------
Sel::Sel(void): Organisme() {
_correspondance[id()] = 'S';
}
short Sel::id(void) const noexcept {
@ -131,12 +137,10 @@ short Sel::id(void) const noexcept {
// -------- Mouton --------
Mouton::Mouton(void): Animal() {
_correspondance[id()] = 'M';
}
Mouton::~Mouton(void) {
}
Mouton::~Mouton(void) { }
bool Mouton::carnivore(void) const noexcept {
return false;
@ -150,12 +154,10 @@ short Mouton::id(void) const noexcept {
// -------- Loup --------
Loup::Loup(void): Animal() {
_correspondance[id()] = 'L';
}
Loup::~Loup(void) {
}
Loup::~Loup(void) { }
bool Loup::carnivore(void) const noexcept {
return false;

View file

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