Modifications
- Supprime tout les "_" des variables/fonctions/méthodes - Supprime l'ancien code
This commit is contained in:
parent
8354a8b80a
commit
cea5831bb0
10 changed files with 43 additions and 79 deletions
|
@ -13,9 +13,9 @@
|
||||||
|
|
||||||
class Animal: public Organisme {
|
class Animal: public Organisme {
|
||||||
protected:
|
protected:
|
||||||
const int _vitesse, _ageMAX;
|
const int vitesse, ageMAX;
|
||||||
|
|
||||||
int _age;
|
int age;
|
||||||
|
|
||||||
// Renvoie une vitesse aléatoire
|
// Renvoie une vitesse aléatoire
|
||||||
virtual int generationVitesse(void) const noexcept = 0;
|
virtual int generationVitesse(void) const noexcept = 0;
|
||||||
|
|
|
@ -4,18 +4,18 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
class Organisme {
|
class Organisme {
|
||||||
inline static int __totalID; // permet d'incrémenter de 1 l'ID de chaque organisme
|
inline static int totalID; // permet d'incrémenter de 1 l'ID de chaque organisme
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
const int _universID; // stocke l'ID de l'univers où l'organisme est présent
|
const int universID; // stocke l'ID de l'univers où l'organisme est présent
|
||||||
|
|
||||||
/* stocke la table des correspondances,
|
/* stocke la table des correspondances,
|
||||||
* chaque organisme possède un ID unique et est
|
* chaque organisme possède un ID unique et est
|
||||||
* représenté par une lettre, cette association est
|
* représenté par une lettre, cette association est
|
||||||
* réalisé dans cette map */
|
* réalisé dans cette map */
|
||||||
static inline std::map<int, char> _correspondance;
|
static inline std::map<int, char> correspondance;
|
||||||
|
|
||||||
int _index; // Location dans l'univers
|
int index; // Location dans l'univers
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const int ID; // ID unique pour chaque organisme
|
const int ID; // ID unique pour chaque organisme
|
||||||
|
|
|
@ -12,9 +12,9 @@
|
||||||
class Univers {
|
class Univers {
|
||||||
friend class Organisme;
|
friend class Organisme;
|
||||||
|
|
||||||
const int _m, _n, _tailleUnivers; // dimensions de l'univers
|
const int m, n, tailleUnivers; // dimensions de l'univers
|
||||||
int _tour; // tour
|
int tour; // tour
|
||||||
int * _plateau; // tableau représentant l'univers
|
int * plateau; // tableau représentant l'univers
|
||||||
|
|
||||||
/* Stocke pour chaque numéro d'univers :
|
/* Stocke pour chaque numéro d'univers :
|
||||||
* - les index libres (non occupés)
|
* - les index libres (non occupés)
|
||||||
|
@ -23,7 +23,7 @@ class Univers {
|
||||||
|
|
||||||
inline static std::map<int, std::pair<int, int>> dimensionsUnivers; // Dimensions de l'univers (largeur, longueur)
|
inline static std::map<int, std::pair<int, int>> dimensionsUnivers; // Dimensions de l'univers (largeur, longueur)
|
||||||
|
|
||||||
inline static int __totalID; // s'incrémente à chaque création d'univers
|
inline static int totalID; // s'incrémente à chaque création d'univers
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const int ID; // ID unique pour chaque univers
|
const int ID; // ID unique pour chaque univers
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
#include "../includes/animal.hpp"
|
#include "../includes/animal.hpp"
|
||||||
|
|
||||||
Animal::Animal(int universID, int ageMax, int age, int vitesse): Organisme(universID, recuperationIndexLibre(universID)), // position aléatoire
|
Animal::Animal(int universID, int ageMax, int age, int vitesse): Organisme(universID, recuperationIndexLibre(universID)), // position aléatoire
|
||||||
_vitesse(vitesse), // par des coordonées
|
vitesse(vitesse), // par des coordonées
|
||||||
_ageMAX(ageMax), // d'un index de
|
ageMAX(ageMax), // d'un index de
|
||||||
_age(age) { } // indexLibres (listeUnivers[ID].first)
|
age(age) { } // indexLibres (listeUnivers[ID].first)
|
||||||
|
|
||||||
Animal::Animal(int universID, int index, int ageMax, int age, int vitesse): Organisme(universID, index),
|
Animal::Animal(int universID, int index, int ageMax, int age, int vitesse): Organisme(universID, index),
|
||||||
_vitesse(vitesse),
|
vitesse(vitesse),
|
||||||
_ageMAX(ageMax),
|
ageMAX(ageMax),
|
||||||
_age(age) { }
|
age(age) { }
|
||||||
|
|
||||||
Animal::~Animal(void) { }
|
Animal::~Animal(void) { }
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "../includes/herbe.hpp"
|
#include "../includes/herbe.hpp"
|
||||||
|
|
||||||
Herbe::Herbe(int universID, int index): Organisme(universID, index) {
|
Herbe::Herbe(int universID, int index): Organisme(universID, index) {
|
||||||
_correspondance[ID] = ' ';
|
correspondance[ID] = ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Herbe::animal(void) const noexcept {
|
bool Herbe::animal(void) const noexcept {
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
#include "../includes/loup.hpp"
|
#include "../includes/loup.hpp"
|
||||||
|
|
||||||
Loup::Loup(int universID): Animal(universID, 60, 0, Loup::generationVitesse()) {
|
Loup::Loup(int universID): Animal(universID, 60, 0, Loup::generationVitesse()) {
|
||||||
_correspondance[ID] = 'L';
|
correspondance[ID] = 'L';
|
||||||
}
|
}
|
||||||
|
|
||||||
Loup::Loup(int universID, int index): Animal(universID, index, 60, 0, Loup::generationVitesse()) {
|
Loup::Loup(int universID, int index): Animal(universID, index, 60, 0, Loup::generationVitesse()) {
|
||||||
_correspondance[ID] = 'L';
|
correspondance[ID] = 'L';
|
||||||
}
|
}
|
||||||
|
|
||||||
Loup::~Loup(void) { }
|
Loup::~Loup(void) { }
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
#include "../includes/mouton.hpp"
|
#include "../includes/mouton.hpp"
|
||||||
|
|
||||||
Mouton::Mouton(int universID): Animal(universID, 50, 0, Mouton::generationVitesse()) {
|
Mouton::Mouton(int universID): Animal(universID, 50, 0, Mouton::generationVitesse()) {
|
||||||
_correspondance[ID] = 'M';
|
correspondance[ID] = 'M';
|
||||||
}
|
}
|
||||||
|
|
||||||
Mouton::Mouton(int universID, int index): Animal(universID, index, 50, 0, Mouton::generationVitesse()) {
|
Mouton::Mouton(int universID, int index): Animal(universID, index, 50, 0, Mouton::generationVitesse()) {
|
||||||
_correspondance[ID] = 'M';
|
correspondance[ID] = 'M';
|
||||||
}
|
}
|
||||||
|
|
||||||
int Mouton::generationVitesse(void) const noexcept {
|
int Mouton::generationVitesse(void) const noexcept {
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
#include "../includes/univers.hpp"
|
#include "../includes/univers.hpp"
|
||||||
#include "../includes/organisme.hpp"
|
#include "../includes/organisme.hpp"
|
||||||
|
|
||||||
Organisme::Organisme(int universID, int index): _universID(universID), _index(index), ID(__totalID + 1) {
|
Organisme::Organisme(int universID, int index): universID(universID), index(index), ID(totalID + 1) {
|
||||||
if(Univers::listeUnivers[universID].first.size() == 0) // si il n'y a plus d'index de libres
|
if(Univers::listeUnivers[universID].first.size() == 0) // si il n'y a plus d'index de libres
|
||||||
throw std::domain_error("Trop d'organismes pour l'univers.");
|
throw std::domain_error("Trop d'organismes pour l'univers.");
|
||||||
__totalID = ID; // + 1 aux ID
|
totalID = ID; // + 1 aux ID
|
||||||
Univers::listeUnivers[_universID].second.push_back(this);
|
Univers::listeUnivers[universID].second.push_back(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
Organisme::~Organisme(void) {
|
Organisme::~Organisme(void) {
|
||||||
|
@ -13,13 +13,13 @@ Organisme::~Organisme(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
char Organisme::lettre(int id) noexcept {
|
char Organisme::lettre(int id) noexcept {
|
||||||
if(_correspondance[id])
|
if(correspondance[id])
|
||||||
return _correspondance[id];
|
return correspondance[id];
|
||||||
return ' ';
|
return ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<int, std::pair<int, int>> Organisme::position(int id) const noexcept {
|
std::pair<int, std::pair<int, int>> Organisme::position(int id) const noexcept {
|
||||||
return std::make_pair(_index, std::make_pair(_index / Univers::dimensionsUnivers[id].first, _index % Univers::dimensionsUnivers[id].first));
|
return std::make_pair(index, std::make_pair(index / Univers::dimensionsUnivers[id].first, index % Univers::dimensionsUnivers[id].first));
|
||||||
}
|
}
|
||||||
|
|
||||||
int Organisme::recuperationIndexLibre(int universID) {
|
int Organisme::recuperationIndexLibre(int universID) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#include "../includes/sel.hpp"
|
#include "../includes/sel.hpp"
|
||||||
|
|
||||||
Sel::Sel(int universID, int index): Organisme(universID, index) {
|
Sel::Sel(int universID, int index): Organisme(universID, index) {
|
||||||
_correspondance[ID] = '-';
|
correspondance[ID] = '-';
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Sel::animal(void) const noexcept {
|
bool Sel::animal(void) const noexcept {
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
#include "../includes/univers.hpp"
|
#include "../includes/univers.hpp"
|
||||||
#include "../includes/herbe.hpp"
|
#include "../includes/herbe.hpp"
|
||||||
|
|
||||||
Univers::Univers(int longueur, int largeur): _m(longueur),
|
Univers::Univers(int longueur, int largeur): m(longueur),
|
||||||
_n(largeur),
|
n(largeur),
|
||||||
_tailleUnivers(longueur * largeur),
|
tailleUnivers(longueur * largeur),
|
||||||
_tour(0),
|
tour(0),
|
||||||
ID(__totalID + 1) {
|
ID(totalID + 1) {
|
||||||
__totalID = ID; // + 1 aux ID
|
totalID = ID; // + 1 aux ID
|
||||||
|
|
||||||
// On ajoute tous les index possibles car pour l'instant le plateau est vide
|
// On ajoute tous les index possibles car pour l'instant le plateau est vide
|
||||||
for(int i = 0; i < _tailleUnivers; i++)
|
for(int i = 0; i < tailleUnivers; i++)
|
||||||
listeUnivers[ID].first.push_back(i);
|
listeUnivers[ID].first.push_back(i);
|
||||||
|
|
||||||
// On mélange notre vecteur d'index non occupés
|
// On mélange notre vecteur d'index non occupés
|
||||||
|
@ -18,7 +18,7 @@ Univers::Univers(int longueur, int largeur): _m(longueur),
|
||||||
std::shuffle(listeUnivers[ID].first.begin(), listeUnivers[ID].first.end(), graine);
|
std::shuffle(listeUnivers[ID].first.begin(), listeUnivers[ID].first.end(), graine);
|
||||||
|
|
||||||
// Remplie quelques valeurs du tableau avec de l'herbe
|
// Remplie quelques valeurs du tableau avec de l'herbe
|
||||||
while(listeUnivers[ID].first.size() > (uint64_t)_tailleUnivers - _tailleUnivers / 2) {
|
while(listeUnivers[ID].first.size() > (uint64_t)tailleUnivers - tailleUnivers / 2) {
|
||||||
new Herbe(ID, listeUnivers[ID].first.back());
|
new Herbe(ID, listeUnivers[ID].first.back());
|
||||||
listeUnivers[ID].first.pop_back();
|
listeUnivers[ID].first.pop_back();
|
||||||
}
|
}
|
||||||
|
@ -32,49 +32,13 @@ Univers::~Univers(void) {
|
||||||
delete it;
|
delete it;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* void Univers::ajoutAnimaux(std::vector<Animal*> animaux) {
|
|
||||||
if(animaux.size() > listeUnivers[ID].first.size()) // si il n'y a plus d'index de libres
|
|
||||||
throw std::domain_error("Trop d'organismes pour l'univers.");
|
|
||||||
|
|
||||||
while(!animaux.empty()) { // on rajoute les animaux stockés dans le vecteur
|
|
||||||
// TODO: ici il faut pas donner un indice aléatoire mais l'indice des coordonnées de l'animal
|
|
||||||
_plateau[listeUnivers[ID].first.back()] = animaux.back()->ID; // on place l'ID unique de l'animal
|
|
||||||
animaux.pop_back(); // on retire l'animal du vecteur
|
|
||||||
listeUnivers[ID].first.pop_back(); // on retire l'index du vecteur
|
|
||||||
}
|
|
||||||
} */
|
|
||||||
|
|
||||||
/* void Univers::modificationOrganisme(Organisme * organisme, int index) {
|
|
||||||
if(index > _tailleUnivers)
|
|
||||||
throw std::range_error("Impossible de placer un organisme à l'index spécifié.");
|
|
||||||
|
|
||||||
_plateau[index] = organisme->ID; // on place notre organisme
|
|
||||||
|
|
||||||
std::cout << "listeUnivers[ID].size() -> " << listeUnivers[ID].first.size() << std::endl;
|
|
||||||
std::cout << "----------------------" << std::endl;
|
|
||||||
|
|
||||||
auto it = std::find(listeUnivers[ID].first.begin(), listeUnivers[ID].first.end(), index);
|
|
||||||
if(it == listeUnivers[ID].first.end()) { // si index non libre (pas présent dans le vecteur)
|
|
||||||
if(organisme->ID <= 0) // si c'est non vivant
|
|
||||||
listeUnivers[ID].first.push_back(index); // on le rajoute
|
|
||||||
} else { // si index libre (présent dans le vecteur)
|
|
||||||
if(organisme->ID > 0) { // si c'est vivant
|
|
||||||
_nbAnimaux++; // incrémente le nombre d'animaux
|
|
||||||
listeUnivers[ID].first.erase(it); // on le retire
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout << "listeUnivers[ID].size() -> " << listeUnivers[ID].first.size() << std::endl;
|
|
||||||
std::cout << "----------------------" << std::endl;
|
|
||||||
} */
|
|
||||||
|
|
||||||
void Univers::affichage(void) const noexcept {
|
void Univers::affichage(void) const noexcept {
|
||||||
// On génère le plateau pour l'affichage
|
// On génère le plateau pour l'affichage
|
||||||
int * plateau = new int[_tailleUnivers]();
|
int * plateau = new int[tailleUnivers]();
|
||||||
for(auto it: listeUnivers[ID].second)
|
for(auto it: listeUnivers[ID].second)
|
||||||
plateau[it->position(ID).first] = it->ID;
|
plateau[it->position(ID).first] = it->ID;
|
||||||
|
|
||||||
for(int i = 0; i < _n * 4; i++)
|
for(int i = 0; i < n * 4; i++)
|
||||||
if(i == 0)
|
if(i == 0)
|
||||||
std::cout << "┌"; // coin supérieur gauche
|
std::cout << "┌"; // coin supérieur gauche
|
||||||
else
|
else
|
||||||
|
@ -82,19 +46,19 @@ void Univers::affichage(void) const noexcept {
|
||||||
std::cout << "┐" << std::endl; // coin supérieur droit
|
std::cout << "┐" << std::endl; // coin supérieur droit
|
||||||
|
|
||||||
std::cout << "│ "; // premier côté gauche
|
std::cout << "│ "; // premier côté gauche
|
||||||
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++) {
|
||||||
std::cout << Organisme::lettre(plateau[i + j]);
|
std::cout << Organisme::lettre(plateau[i + j]);
|
||||||
if(j == _n - 1)
|
if(j == n - 1)
|
||||||
std::cout << " │ "; // côté droit
|
std::cout << " │ "; // côté droit
|
||||||
else
|
else
|
||||||
std::cout << " ";
|
std::cout << " ";
|
||||||
}
|
}
|
||||||
if(i != _tailleUnivers - _n) std::cout << std::endl << "│ "; // saut de ligne et suite du côté gauche
|
if(i != tailleUnivers - n) std::cout << std::endl << "│ "; // saut de ligne et suite du côté gauche
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
for(int i = 0; i < _n * 4; i++)
|
for(int i = 0; i < n * 4; i++)
|
||||||
if(i == 0)
|
if(i == 0)
|
||||||
std::cout << "└"; // coin inférieur gauche
|
std::cout << "└"; // coin inférieur gauche
|
||||||
else
|
else
|
||||||
|
|
Reference in a new issue