Ajout du mode echequier et possibilité d'afficher les lignes lors de l'affichage

This commit is contained in:
Mylloon 2022-04-06 01:59:33 +02:00
parent 5270749758
commit eec1524b79
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
2 changed files with 76 additions and 15 deletions

View file

@ -36,8 +36,10 @@ class Univers {
~Univers(void); ~Univers(void);
// Affiche l'univers à l'instant présent // Affiche l'univers à l'instant présent, possibilité
void affichage(void) const noexcept; // d'afficher les traits séparant les valeurs du
// tableaux, non par défaut
void affichage(bool = false) const noexcept;
// Vérifie s'il y a de la vie dans l'univers // Vérifie s'il y a de la vie dans l'univers
bool enVie(void) const noexcept; bool enVie(void) const noexcept;

View file

@ -37,43 +37,102 @@ void Univers::melange(std::vector<int> * vecteur) {
std::shuffle(vecteur->begin(), vecteur->end(), graine); std::shuffle(vecteur->begin(), vecteur->end(), graine);
} }
void Univers::affichage(void) const noexcept { void Univers::affichage(bool traits) 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]();
for(auto it: m_liste_univers[ID].second) { for(auto it: m_liste_univers[ID].second) {
plateau[it->position(ID).first] = it->ID; plateau[it->position(ID).first] = it->ID;
} }
// On affiche les coordonées type "échequier" seulement int largeur_affichage = m_largeur * 4;
// si on a assez de lettre
for(int i = 0; i < m_largeur * 4; ++i) { // On affiche les coordonées type "échequier" seulement
if(i == 0) { // si on a assez de lettre et que le nombre est inférieur à 100 (3 caractères)
std::cout << ""; // coin supérieur gauche char echequier = 0;
if(m_longueur <= 26 && m_largeur < 100) {
std::cout << " "; // espace du début
for(int i = 0; i < m_largeur; ++i) { // pour toute la largeur
if(i < 9 && m_largeur > 9) { // si on affiche + 9 nombres on ajoute
// un 0 au 9 premiers
std::cout << "0";
} else { } else {
std::cout << ""; // haut 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(m_longueur <= 26 && 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 std::cout << "" << std::endl; // coin supérieur droit
std::cout << ""; // premier côté gauche // premier côté gauche
if(m_longueur <= 26 && m_largeur < 100) { // espace pour l'alignement du tableau si nécessaire
std::cout << echequier++ << " ";
}
std::cout << "";
for(int i = 0; i < m_taille_univers; i += m_largeur) { for(int i = 0; i < m_taille_univers; i += m_largeur) {
for(int j = 0; j < m_largeur; ++j) { for(int j = 0; j < m_largeur; ++j) {
std::cout << Organisme::lettre(plateau[i + j]); std::cout << Organisme::lettre(plateau[i + j]);
if(j == m_largeur - 1) { if(j == m_largeur - 1) {
std::cout << ""; // côté droit std::cout << ""; // côté droit
} else { // espace dans le tableau
if(traits) {
std::cout << "";
} else { } else {
std::cout << " "; std::cout << " ";
} }
} }
}
if(i != m_taille_univers - m_largeur) { if(i != m_taille_univers - m_largeur) {
std::cout << std::endl << ""; // saut de ligne et suite du côté gauche std::cout << std::endl;
if(m_longueur <= 26 && m_largeur < 100) {
std::cout << " ";
}
// ligne vide
std::cout << "";
if(traits) {
for(int j = 0; j < 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(m_longueur <= 26 && m_largeur < 100) {
std::cout << echequier++ << " ";
}
std::cout << "";
} }
} }
std::cout << std::endl; std::cout << std::endl;
for(int i = 0; i < m_largeur * 4; ++i) { for(int i = 0; i < largeur_affichage; ++i) {
if(i == 0) { if(i == 0) {
if(m_longueur <= 26 && m_largeur < 100) { // espace si il faut afficher l'echequier
std::cout << " ";
}
std::cout << ""; // coin inférieur gauche std::cout << ""; // coin inférieur gauche
} else { } else {
std::cout << ""; // bas std::cout << ""; // bas