From b6d9069a5d4bcc3c24b8732399f92d0d6b408dc7 Mon Sep 17 00:00:00 2001 From: Mylloon Date: Wed, 6 Apr 2022 14:31:32 +0200 Subject: [PATCH] =?UTF-8?q?G=C3=A8re=20la=20superposition=20des=20organism?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/evenement.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/evenement.cpp b/src/evenement.cpp index edd3e74..7ced01f 100644 --- a/src/evenement.cpp +++ b/src/evenement.cpp @@ -22,7 +22,21 @@ void Evenement::affichage(Univers * univers, const bool traits) noexcept { // On génère le plateau pour l'affichage int * plateau = new int[univers->m_taille_univers](); for(auto it: univers->m_liste_univers[univers->ID].second) { - plateau[it->position(univers->ID).first] = it->ID; + // Vérification : un animal doit avoir la priorité sur + // un autre organisme dans l'affichage + if(plateau[it->position(univers->ID).first] == 0) { // pas de souci, aucun organisme à cette position + plateau[it->position(univers->ID).first] = it->ID; + } else { // souci : un organisme est déjà présent + // on sait déjà qu'un animal ne se superpose pas sur + // une autre case animal, donc c'est soit : + // - 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 + } } int largeur_affichage = univers->m_largeur * 4;