Mélange du vecteur d'index non occupés déplacé dans une méthode tierce

This commit is contained in:
Mylloon 2022-04-06 00:54:10 +02:00
parent 9a7a30fc2e
commit 9de70611c2
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
2 changed files with 13 additions and 4 deletions

View file

@ -14,7 +14,7 @@ class Univers {
friend class Organisme; friend class Organisme;
const int m_longueur, m_largeur, m_taille_univers; // dimensions de l'univers const int m_longueur, m_largeur, m_taille_univers; // dimensions de l'univers
int m_tour; // tour int m_tour; // âge de 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)
@ -25,10 +25,15 @@ class Univers {
inline static int m_total_ID; // s'incrémente à chaque création d'univers inline static int m_total_ID; // s'incrémente à chaque création d'univers
// Mélange le contenu d'un vecteur
void melange(std::vector<int> * vecteur);
public: public:
const int ID; // ID unique pour chaque univers const int ID; // ID unique pour chaque univers
// longueur, largeur
Univers(const int, const int); Univers(const int, const int);
~Univers(void); ~Univers(void);
// Affiche l'univers à l'instant présent // Affiche l'univers à l'instant présent

View file

@ -13,9 +13,7 @@ Univers::Univers(const int longueur, const int largeur): m_longueur(longueur),
} }
// On mélange notre vecteur d'index non occupés // On mélange notre vecteur d'index non occupés
std::random_device nombre_aleatoire; melange(&m_liste_univers[ID].first);
std::default_random_engine graine(nombre_aleatoire());
std::shuffle(m_liste_univers[ID].first.begin(), m_liste_univers[ID].first.end(), graine);
// Remplie quelques valeurs du tableau avec de l'herbe // Remplie quelques valeurs du tableau avec de l'herbe
while(m_liste_univers[ID].first.size() > static_cast<uint64_t>(m_taille_univers - m_taille_univers / 2)) { // cast static grâce à "-Wold-style-cast" et "-Wsign-conversion" (syntaxe C++) while(m_liste_univers[ID].first.size() > static_cast<uint64_t>(m_taille_univers - m_taille_univers / 2)) { // cast static grâce à "-Wold-style-cast" et "-Wsign-conversion" (syntaxe C++)
@ -32,6 +30,12 @@ Univers::~Univers(void) {
} }
} }
void Univers::melange(std::vector<int> * vecteur) {
std::random_device nombre_aleatoire;
std::default_random_engine graine(nombre_aleatoire());
std::shuffle(vecteur->begin(), vecteur->end(), graine);
}
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[m_taille_univers](); int * plateau = new int[m_taille_univers]();