Déplacement des définitions du header vers le fichier source
This commit is contained in:
parent
32de6b9498
commit
0a165f9c6b
2 changed files with 133 additions and 122 deletions
|
@ -9,135 +9,17 @@ struct Evenement {
|
|||
Evenement() = delete;
|
||||
|
||||
// Créer un univers pour préparer la simulation
|
||||
static inline void creationSimulation(Univers ** univers, const int m, const int n, int nb_moutons, int nb_loups) {
|
||||
*univers = new Univers(m, n);
|
||||
|
||||
while(nb_moutons > 0) { // Création des moutons dans l'univers
|
||||
new Mouton((*univers)->ID);
|
||||
nb_moutons--;
|
||||
}
|
||||
while(nb_loups > 0) { // Création des loups dans l'univers
|
||||
new Loup((*univers)->ID);
|
||||
nb_loups--;
|
||||
}
|
||||
}
|
||||
static void creationSimulation(Univers **, const int, const int, int, int);
|
||||
|
||||
// Lance la simulation pour un univers
|
||||
static inline void lancerSimulation(Univers *) { }
|
||||
static void lancerSimulation(Univers *);
|
||||
|
||||
// Arrête la simulation d'un univers
|
||||
static inline void arreterSimulation(Univers * univers) {
|
||||
delete univers;
|
||||
univers = nullptr;
|
||||
}
|
||||
static void arreterSimulation(Univers *);
|
||||
|
||||
// Affiche un univers, possibilité d'afficher les
|
||||
// traits séparant les valeurs du tableaux (par défaut : non)
|
||||
static inline void affichage(Univers * univers, const bool traits = false) 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;
|
||||
}
|
||||
|
||||
int largeur_affichage = univers->m_largeur * 4;
|
||||
|
||||
// On affiche les coordonées type "échequier" seulement
|
||||
// si on a assez de lettre et que le nombre est inférieur à 100 (3 caractères)
|
||||
char echequier = 0;
|
||||
|
||||
if(univers->m_longueur <= 26 && univers->m_largeur < 100) {
|
||||
std::cout << " "; // espace du début
|
||||
for(int i = 0; i < univers->m_largeur; ++i) { // pour toute la largeur
|
||||
if(i < 9 && univers->m_largeur > 9) { // si on affiche + 9 nombres on ajoute
|
||||
// un 0 au 9 premiers
|
||||
std::cout << "0";
|
||||
} else {
|
||||
if (i < 9) { // sinon si on affiche que max 9 nombres on met un espace
|
||||
std::cout << " ";
|
||||
}
|
||||
}
|
||||
std::cout << static_cast<int>(echequier++) + 1 << " "; // cast en int
|
||||
}
|
||||
std::cout << std::endl;
|
||||
}
|
||||
echequier = 'A';
|
||||
|
||||
for(int i = 0; i < largeur_affichage; ++i) {
|
||||
if(i == 0) { // coin supérieur gauche
|
||||
if(univers->m_longueur <= 26 && univers->m_largeur < 100) { // espace si il faut afficher l'echequier
|
||||
std::cout << " ";
|
||||
}
|
||||
std::cout << "┌";
|
||||
} else { // haut
|
||||
std::cout << "─";
|
||||
}
|
||||
}
|
||||
std::cout << "┐" << std::endl; // coin supérieur droit
|
||||
|
||||
// premier côté gauche
|
||||
if(univers->m_longueur <= 26 && univers->m_largeur < 100) { // espace pour l'alignement du tableau si nécessaire
|
||||
std::cout << echequier++ << " ";
|
||||
}
|
||||
std::cout << "│ ";
|
||||
|
||||
for(int i = 0; i < univers->m_taille_univers; i += univers->m_largeur) {
|
||||
for(int j = 0; j < univers->m_largeur; ++j) {
|
||||
std::cout << Organisme::lettre(plateau[i + j]);
|
||||
if(j == univers->m_largeur - 1) {
|
||||
std::cout << " │ "; // côté droit
|
||||
} else { // espace dans le tableau
|
||||
if(traits) {
|
||||
std::cout << " ┊ ";
|
||||
} else {
|
||||
|
||||
std::cout << " ";
|
||||
}
|
||||
}
|
||||
}
|
||||
if(i != univers->m_taille_univers - univers->m_largeur) {
|
||||
std::cout << std::endl;
|
||||
if(univers->m_longueur <= 26 && univers->m_largeur < 100) {
|
||||
std::cout << " ";
|
||||
}
|
||||
|
||||
// ligne vide
|
||||
std::cout << "│";
|
||||
if(traits) {
|
||||
for(int j = 0; j < univers->m_largeur - 1; ++j) {
|
||||
std::cout << "---+";
|
||||
}
|
||||
std::cout << "---";
|
||||
} else {
|
||||
std::cout << std::string(static_cast<uint64_t>(largeur_affichage - 1), ' '); // saut de ligne et remplissage
|
||||
// de la ligne de vide pour y mettre
|
||||
// le caractère fermant le tableau
|
||||
}
|
||||
std::cout << "│" << std::endl;
|
||||
|
||||
// saut de ligne et suite du côté gauche
|
||||
if(univers->m_longueur <= 26 && univers->m_largeur < 100) {
|
||||
std::cout << echequier++ << " ";
|
||||
}
|
||||
std::cout << "│ ";
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << std::endl;
|
||||
for(int i = 0; i < largeur_affichage; ++i) {
|
||||
if(i == 0) {
|
||||
if(univers->m_longueur <= 26 && univers->m_largeur < 100) { // espace si il faut afficher l'echequier
|
||||
std::cout << " ";
|
||||
}
|
||||
std::cout << "└"; // coin inférieur gauche
|
||||
} else {
|
||||
std::cout << "─"; // bas
|
||||
}
|
||||
}
|
||||
std::cout << "┘" << std::endl; // coin inférieur droit
|
||||
|
||||
delete[] plateau;
|
||||
}
|
||||
static void affichage(Univers *, const bool = false) noexcept;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
129
src/evenement.cpp
Normal file
129
src/evenement.cpp
Normal file
|
@ -0,0 +1,129 @@
|
|||
#include "../includes/evenement.hpp"
|
||||
|
||||
void Evenement::creationSimulation(Univers ** univers, const int m, const int n, int nb_moutons, int nb_loups) {
|
||||
*univers = new Univers(m, n);
|
||||
|
||||
while(nb_moutons > 0) { // Création des moutons dans l'univers
|
||||
new Mouton((*univers)->ID);
|
||||
nb_moutons--;
|
||||
}
|
||||
while(nb_loups > 0) { // Création des loups dans l'univers
|
||||
new Loup((*univers)->ID);
|
||||
nb_loups--;
|
||||
}
|
||||
}
|
||||
|
||||
void Evenement::arreterSimulation(Univers * univers) {
|
||||
delete univers;
|
||||
univers = nullptr;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
int largeur_affichage = univers->m_largeur * 4;
|
||||
|
||||
// On affiche les coordonées type "échequier" seulement
|
||||
// si on a assez de lettre et que le nombre est inférieur à 100 (3 caractères)
|
||||
char echequier = 0;
|
||||
|
||||
if(univers->m_longueur <= 26 && univers->m_largeur < 100) {
|
||||
std::cout << " "; // espace du début
|
||||
for(int i = 0; i < univers->m_largeur; ++i) { // pour toute la largeur
|
||||
if(i < 9 && univers->m_largeur > 9) { // si on affiche + 9 nombres on ajoute
|
||||
// un 0 au 9 premiers
|
||||
std::cout << "0";
|
||||
} else {
|
||||
if (i < 9) { // sinon si on affiche que max 9 nombres on met un espace
|
||||
std::cout << " ";
|
||||
}
|
||||
}
|
||||
std::cout << static_cast<int>(echequier++) + 1 << " "; // cast en int
|
||||
}
|
||||
std::cout << std::endl;
|
||||
}
|
||||
echequier = 'A';
|
||||
|
||||
for(int i = 0; i < largeur_affichage; ++i) {
|
||||
if(i == 0) { // coin supérieur gauche
|
||||
if(univers->m_longueur <= 26 && univers->m_largeur < 100) { // espace si il faut afficher l'echequier
|
||||
std::cout << " ";
|
||||
}
|
||||
std::cout << "┌";
|
||||
} else { // haut
|
||||
std::cout << "─";
|
||||
}
|
||||
}
|
||||
std::cout << "┐" << std::endl; // coin supérieur droit
|
||||
|
||||
// premier côté gauche
|
||||
if(univers->m_longueur <= 26 && univers->m_largeur < 100) { // espace pour l'alignement du tableau si nécessaire
|
||||
std::cout << echequier++ << " ";
|
||||
}
|
||||
std::cout << "│ ";
|
||||
|
||||
for(int i = 0; i < univers->m_taille_univers; i += univers->m_largeur) {
|
||||
for(int j = 0; j < univers->m_largeur; ++j) {
|
||||
std::cout << Organisme::lettre(plateau[i + j]);
|
||||
if(j == univers->m_largeur - 1) {
|
||||
std::cout << " │ "; // côté droit
|
||||
} else { // espace dans le tableau
|
||||
if(traits) {
|
||||
std::cout << " ┊ ";
|
||||
} else {
|
||||
|
||||
std::cout << " ";
|
||||
}
|
||||
}
|
||||
}
|
||||
if(i != univers->m_taille_univers - univers->m_largeur) {
|
||||
std::cout << std::endl;
|
||||
if(univers->m_longueur <= 26 && univers->m_largeur < 100) {
|
||||
std::cout << " ";
|
||||
}
|
||||
|
||||
// ligne vide
|
||||
std::cout << "│";
|
||||
if(traits) {
|
||||
for(int j = 0; j < univers->m_largeur - 1; ++j) {
|
||||
std::cout << "---+";
|
||||
}
|
||||
std::cout << "---";
|
||||
} else {
|
||||
std::cout << std::string(static_cast<uint64_t>(largeur_affichage - 1), ' '); // saut de ligne et remplissage
|
||||
// de la ligne de vide pour y mettre
|
||||
// le caractère fermant le tableau
|
||||
}
|
||||
std::cout << "│" << std::endl;
|
||||
|
||||
// saut de ligne et suite du côté gauche
|
||||
if(univers->m_longueur <= 26 && univers->m_largeur < 100) {
|
||||
std::cout << echequier++ << " ";
|
||||
}
|
||||
std::cout << "│ ";
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << std::endl;
|
||||
for(int i = 0; i < largeur_affichage; ++i) {
|
||||
if(i == 0) {
|
||||
if(univers->m_longueur <= 26 && univers->m_largeur < 100) { // espace si il faut afficher l'echequier
|
||||
std::cout << " ";
|
||||
}
|
||||
std::cout << "└"; // coin inférieur gauche
|
||||
} else {
|
||||
std::cout << "─"; // bas
|
||||
}
|
||||
}
|
||||
std::cout << "┘" << std::endl; // coin inférieur droit
|
||||
|
||||
delete[] plateau;
|
||||
}
|
||||
|
||||
void Evenement::lancerSimulation(Univers * univers) {
|
||||
std::cout << "Lancement de la simulation pour l'univers n°" << univers->ID << "..." << std::endl;
|
||||
}
|
Reference in a new issue