Ajouts et modifications
- Supprime la méthode animal (remplacé par dynamic_cast) - Ajoute la métode action() qui définit le comportement de chaque organisme - Lance l'action de chaque organisme à chaque tour
This commit is contained in:
parent
7ef27412ad
commit
2205f3b15e
13 changed files with 29 additions and 20 deletions
|
@ -39,9 +39,6 @@ class Animal: public Organisme {
|
||||||
|
|
||||||
virtual ~Animal(void);
|
virtual ~Animal(void);
|
||||||
|
|
||||||
// Renvoie vrai
|
|
||||||
bool animal(void) const noexcept;
|
|
||||||
|
|
||||||
// Animal carnivore ?
|
// Animal carnivore ?
|
||||||
virtual bool carnivore(void) const noexcept = 0;
|
virtual bool carnivore(void) const noexcept = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,8 +13,8 @@ class Herbe: public Organisme {
|
||||||
// ID de l'univers
|
// ID de l'univers
|
||||||
Herbe(int);
|
Herbe(int);
|
||||||
|
|
||||||
// Renvoie faux
|
// Définit le comportement de l'herbe
|
||||||
bool animal(void) const noexcept;
|
void action(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -20,6 +20,9 @@ class Loup: public Animal {
|
||||||
|
|
||||||
// Renvoie vrai
|
// Renvoie vrai
|
||||||
bool carnivore(void) const noexcept;
|
bool carnivore(void) const noexcept;
|
||||||
|
|
||||||
|
// Définit le comportement du loup
|
||||||
|
void action(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -18,6 +18,9 @@ class Mouton: public Animal {
|
||||||
|
|
||||||
// Renvoie faux
|
// Renvoie faux
|
||||||
bool carnivore(void) const noexcept;
|
bool carnivore(void) const noexcept;
|
||||||
|
|
||||||
|
// Définit le comportement du mouton
|
||||||
|
void action(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -34,8 +34,8 @@ class Organisme {
|
||||||
// Renvoie la lettre correspondant à l'ID
|
// Renvoie la lettre correspondant à l'ID
|
||||||
static char lettre(int) noexcept;
|
static char lettre(int) noexcept;
|
||||||
|
|
||||||
// Renvoie vrai si l'organisme est un animal
|
// Définit le comportement de l'organisme
|
||||||
virtual bool animal(void) const noexcept = 0;
|
virtual void action(void) = 0;
|
||||||
|
|
||||||
// Renvoie les positions exact de l'organisme dans l'univers
|
// Renvoie les positions exact de l'organisme dans l'univers
|
||||||
std::pair<int, std::pair<int, int>> position(int) const noexcept;
|
std::pair<int, std::pair<int, int>> position(int) const noexcept;
|
||||||
|
|
|
@ -13,8 +13,8 @@ class Sel: public Organisme {
|
||||||
// ID de l'univers
|
// ID de l'univers
|
||||||
Sel(int);
|
Sel(int);
|
||||||
|
|
||||||
// Renvoie faux
|
// Définit le comportement du sel
|
||||||
bool animal(void) const noexcept;
|
void action(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -13,7 +13,3 @@ Animal::Animal(const int univers_ID, const int age_max,
|
||||||
vitesse(p_vitesse) { }
|
vitesse(p_vitesse) { }
|
||||||
|
|
||||||
Animal::~Animal(void) { }
|
Animal::~Animal(void) { }
|
||||||
|
|
||||||
bool Animal::animal(void) const noexcept {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
|
@ -147,10 +147,20 @@ void Evenement::affichage(Univers * univers, const bool traits) noexcept {
|
||||||
void Evenement::lancerSimulation(Univers * univers) {
|
void Evenement::lancerSimulation(Univers * univers) {
|
||||||
std::cout << "Lancement de la simulation pour l'univers n°" << univers->ID << "..." << std::endl;
|
std::cout << "Lancement de la simulation pour l'univers n°" << univers->ID << "..." << std::endl;
|
||||||
|
|
||||||
|
// A chaque tour de l'univers, on trie les organismes en fonction de leur vitesse
|
||||||
|
// pour déterminer l'ordre des actions, puis chaque organisme fait une action
|
||||||
|
// A la fin de chaque tour, on incrémente de 1 le nombre de tours
|
||||||
while(univers->enVie()) {
|
while(univers->enVie()) {
|
||||||
// On trie les organismes en fonction de leur vitesse
|
// On trie les organismes en fonction de leur vitesse
|
||||||
std::sort(univers->m_liste_univers[univers->ID].second.begin(), univers->m_liste_univers[univers->ID].second.end(), comp_organisme());
|
std::sort(univers->m_liste_univers[univers->ID].second.begin(), univers->m_liste_univers[univers->ID].second.end(), comp_organisme());
|
||||||
|
|
||||||
|
// Pour tout les organismes de notre univers
|
||||||
|
for(auto it: univers->m_liste_univers[univers->ID].second) {
|
||||||
|
it->action(); // Fais ce qu'il a à faire pendant son tour
|
||||||
|
}
|
||||||
|
|
||||||
|
// Incrémente le nombre de tours
|
||||||
|
++univers->m_tour;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,4 @@ Herbe::Herbe(const int univers_ID): Organisme(univers_ID) {
|
||||||
m_correspondance[ID] = _m_lettre;
|
m_correspondance[ID] = _m_lettre;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Herbe::animal(void) const noexcept {
|
void Herbe::action(void) { }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
|
@ -21,3 +21,5 @@ int Loup::generationVitesse(void) const noexcept {
|
||||||
bool Loup::carnivore(void) const noexcept {
|
bool Loup::carnivore(void) const noexcept {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Loup::action(void) { }
|
||||||
|
|
|
@ -19,3 +19,5 @@ int Mouton::generationVitesse(void) const noexcept {
|
||||||
bool Mouton::carnivore(void) const noexcept {
|
bool Mouton::carnivore(void) const noexcept {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Mouton::action(void) { }
|
||||||
|
|
|
@ -8,6 +8,4 @@ Sel::Sel(const int univers_ID): Organisme(univers_ID) {
|
||||||
m_correspondance[ID] = _m_lettre;
|
m_correspondance[ID] = _m_lettre;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Sel::animal(void) const noexcept {
|
void Sel::action(void) { }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ void Univers::melange(std::vector<int> * vecteur) {
|
||||||
|
|
||||||
bool Univers::enVie(void) const noexcept {
|
bool Univers::enVie(void) const noexcept {
|
||||||
for(auto organisme: m_liste_univers[ID].second) { // on parcours les organismes de notre univers
|
for(auto organisme: m_liste_univers[ID].second) { // on parcours les organismes de notre univers
|
||||||
if(organisme->animal()) { // si on a un animal
|
if(dynamic_cast<Animal *>(organisme)) { // si c'est un animal
|
||||||
return true; // renvoie true
|
return true; // renvoie true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue