Modification et ajout
- Méthode position ne prend désormais plus d'argument - Ajout d'une méthode qui renvoie les coordonnées en mode "echequier"
This commit is contained in:
parent
3d8e676cd8
commit
ce3837d0e2
3 changed files with 16 additions and 7 deletions
|
@ -32,8 +32,11 @@ class Organisme {
|
||||||
// Définit le comportement de l'organisme à chaque tour
|
// Définit le comportement de l'organisme à chaque tour
|
||||||
virtual void action(void) = 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 donnée
|
||||||
std::pair<int, std::pair<int, int>> position(int) const noexcept;
|
std::pair<int, std::pair<int, int>> position(void) const noexcept;
|
||||||
|
|
||||||
|
// Renvoie les coordonées de l'organisme en format "echequier"
|
||||||
|
std::string coordoneeeEchequier(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -31,8 +31,8 @@ void Evenement::affichage(Univers * univers, const bool traits) noexcept {
|
||||||
for(auto it: univers->m_organismes_univers[univers->ID]) {
|
for(auto it: univers->m_organismes_univers[univers->ID]) {
|
||||||
// Vérification : un animal doit avoir la priorité sur
|
// Vérification : un animal doit avoir la priorité sur
|
||||||
// un autre organisme dans l'affichage
|
// un autre organisme dans l'affichage
|
||||||
if(plateau[it->position(univers->ID).first] == 0) { // pas de souci, aucun organisme à cette position
|
if(plateau[it->position().first] == 0) { // pas de souci, aucun organisme à cette position
|
||||||
plateau[it->position(univers->ID).first] = it->ID;
|
plateau[it->position().first] = it->ID;
|
||||||
} else { // souci : un organisme est déjà présent
|
} else { // souci : un organisme est déjà présent
|
||||||
// on sait déjà qu'un animal ne se superpose pas sur
|
// on sait déjà qu'un animal ne se superpose pas sur
|
||||||
// une autre case animal, donc c'est soit :
|
// une autre case animal, donc c'est soit :
|
||||||
|
@ -40,7 +40,7 @@ void Evenement::affichage(Univers * univers, const bool traits) noexcept {
|
||||||
// - l'inverse, un non-animal sur une case animal
|
// - l'inverse, un non-animal sur une case animal
|
||||||
// on utilises dynamic_cast<>() pour savoir le type de l'organisme
|
// on utilises dynamic_cast<>() pour savoir le type de l'organisme
|
||||||
if(dynamic_cast<Animal *>(it)) { // si c'est un animal
|
if(dynamic_cast<Animal *>(it)) { // si c'est un animal
|
||||||
plateau[it->position(univers->ID).first] = it->ID;
|
plateau[it->position().first] = it->ID;
|
||||||
} // sinon ne fait rien
|
} // sinon ne fait rien
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,12 @@ char Organisme::lettre(const int id) noexcept {
|
||||||
return ' ';
|
return ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<int, std::pair<int, int>> Organisme::position(const int id) const noexcept {
|
std::pair<int, std::pair<int, int>> Organisme::position(void) const noexcept {
|
||||||
return std::make_pair(m_index, std::make_pair(m_index / Univers::m_dimensions_univers[id].first, m_index % Univers::m_dimensions_univers[id].first));
|
return std::make_pair(m_index, std::make_pair(m_index / Univers::m_dimensions_univers[m_univers_ID].first, m_index % Univers::m_dimensions_univers[m_univers_ID].first));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Organisme::coordoneeeEchequier(void) {
|
||||||
|
int x = position().second.second + 1;
|
||||||
|
char y = 'A' + position().second.first;
|
||||||
|
return y + std::to_string(x);
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue