diff --git a/includes/evenement.hpp b/includes/evenement.hpp index 8d3c0d4..b10e91f 100644 --- a/includes/evenement.hpp +++ b/includes/evenement.hpp @@ -19,7 +19,7 @@ struct Evenement { // Affiche un univers, possibilité d'afficher les // traits séparant les valeurs du tableaux (par défaut : non) - static void affichage(Univers *, bool = false) noexcept; + static void affichage(Univers *, bool = true) noexcept; private: struct comp_organisme { @@ -27,27 +27,29 @@ struct Evenement { int vitesse_a, vitesse_b; // Si l'organisme est un animal, on utilises sa vitesse pour - // la comparaison, sinon on dit que la vitesse == - 1 + // la comparaison, sinon on dit que la vitesse est "infini" + // ce qui permet de placer l'organisme au début du vecteur if(Animal * animal_a = dynamic_cast(organisme_a)) { vitesse_a = animal_a->vitesse; } else { - vitesse_a = -1; + vitesse_a = (int)INFINITY; } if(Animal * animal_b = dynamic_cast(organisme_b)) { vitesse_b = animal_b->vitesse; } else { - vitesse_b = -1; + vitesse_b = (int)INFINITY; } // Si les vitesses sont égales, alors c'est l'ID // (un peu comme la date de création / age) de l'organisme // qui décide car + l'ID est faible, + tôt l'organisme à été // créer, et on part du principe que + on est jeune + on est rapide - + // (on n'utilises pas l'âge car un organisme n'a pas d'âge) if(vitesse_a == vitesse_b) { // cas rare return organisme_a->ID > organisme_b->ID; } + return vitesse_a > vitesse_b; } }; diff --git a/src/evenement.cpp b/src/evenement.cpp index 5016dc0..d2cce2f 100644 --- a/src/evenement.cpp +++ b/src/evenement.cpp @@ -32,7 +32,6 @@ void Evenement::affichage(Univers * univers, const bool traits) noexcept { // - un animal sur une case non-animal // - l'inverse, un non-animal sur une case animal // on utilises dynamic_cast<>() pour savoir le type de l'organisme - // cf. https://stackoverflow.com/a/27433140/15436737 if(dynamic_cast(it)) { // si c'est un animal plateau[it->position(univers->ID).first] = it->ID; } // sinon ne fait rien @@ -145,13 +144,6 @@ void Evenement::lancerSimulation(Univers * univers) { // 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()); - /* for(auto it: univers->m_liste_univers[univers->ID].second) { - if(Animal * c = dynamic_cast(it)) { - std::cout << it->lettre(it->ID) << " (" << it->ID << ") : " << c->vitesse << std::endl; - } else { - std::cout << it->lettre(it->ID) << " (" << it->ID << ");" << std::endl; - } - } */ break; }