ConsoleDisplay.cpp h - JulianKerignard/ProjetJeuDeLaVie_POO GitHub Wiki
#ifndef CONSOLE_DISPLAY_H
#define CONSOLE_DISPLAY_H
#include "DisplayManager.h"
#include <fstream>
class ConsoleDisplay : public DisplayManager {
private:
int iterationCounter; // Compteur d'itérations
std::ofstream outputFile; // Fichier de sortie pour enregistrer les itérations
public:
// Constructeur
ConsoleDisplay();
// Initialisation de l'affichage console
void initialize() override;
// Mise à jour de l'affichage console
void update(const Grid& grid) override;
// Fermeture de l'affichage console
void close() override;
};
#endif // CONSOLE_DISPLAY_H
-
Classe
ConsoleDisplay
:-
Gère l'affichage du Jeu de la Vie dans la console et l'enregistrement des itérations dans un fichier.
-
Membres privés :
-
int iterationCounter
: Compteur d'itérations pour suivre le nombre d'itérations effectuées. -
std::ofstream outputFile
: Fichier de sortie pour enregistrer les itérations.
-
-
Membres publics :
-
ConsoleDisplay() :
- Constructeur qui initialise le compteur d'itérations et ouvre le fichier de sortie.
-
void initialize() override :
- Initialise l'affichage console et écrit les en-têtes dans le fichier de sortie.
-
void update(const Grid& grid) override :
- Met à jour l'affichage console et enregistre l'état de la grille dans le fichier de sortie.
-
void close() override :
- Ferme l'affichage console et le fichier de sortie, affichant un message de fermeture.
-
ConsoleDisplay() :
-
-
ConsoleDisplay() :
- Initialise le compteur d'itérations à 0 et ouvre le fichier de sortie pour enregistrer les itérations.
ConsoleDisplay::ConsoleDisplay() : iterationCounter(0) {
outputFile.open("simulation_log.txt");
}
-
void initialize() :
- Affiche un message d'initialisation dans la console et écrit les en-têtes de la simulation dans le fichier de sortie.
void ConsoleDisplay::initialize() {
std::cout << "Initialisation de l'affichage console" << std::endl;
outputFile << "Simulation du Jeu de la Vie" << std::endl;
outputFile << "==========================" << std::endl << std::endl;
}
-
void update(const Grid& grid) :
- Met à jour l'affichage console en affichant l'état actuel de la grille. Écrit également l'état de la grille et les informations de l'itération dans le fichier de sortie.
void ConsoleDisplay::update(const Grid& grid) {
system("cls"); // Pour Windows (utilisez "clear" pour Linux)
// Affichage console
for (int y = 0; y < grid.getHeight(); y++) {
for (int x = 0; x < grid.getWidth(); x++) {
const Cell& cell = grid.getCellAt(x, y);
if (cell.isObstacleCell()) {
std::cout << "2 ";
} else if (cell.getCurrentState() == CellState::ALIVE) {
std::cout << "1 ";
} else {
std::cout << "0 ";
}
}
std::cout << std::endl;
}
// Écriture dans le fichier
outputFile << "Itération " << iterationCounter << std::endl;
outputFile << "-------------" << std::endl;
for (int y = 0; y < grid.getHeight(); y++) {
for (int x = 0; x < grid.getWidth(); x++) {
const Cell& cell = grid.getCellAt(x, y);
if (cell.isObstacleCell()) {
outputFile << "2 "; // 2 pour les obstacles
} else if (cell.getCurrentState() == CellState::ALIVE) {
outputFile << "1 ";
} else {
outputFile << "0 ";
}
}
outputFile << std::endl;
}
outputFile << std::endl;
std::cout << "\nItération " << iterationCounter << " sauvegardée" << std::endl;
iterationCounter++;
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
-
void close() :
- Affiche un message de fermeture dans la console et ferme le fichier de sortie, indiquant le nombre total d'itérations enregistrées.
void ConsoleDisplay::close() {
std::cout << "Fermeture de l'affichage" << std::endl;
std::cout << "Les " << iterationCounter << " itérations ont été sauvegardées dans 'simulation_log.txt'" << std::endl;
outputFile.close();
}