ConsoleDisplay.cpp h - JulianKerignard/ProjetJeuDeLaVie_POO GitHub Wiki

Fichier ConsoleDisplay.h

#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

Documentation des Membres

  • 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.

Fichier ConsoleDisplay.cpp

Implémentation de la Classe ConsoleDisplay

Constructeur

  • 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");
}

Méthodes

  • 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();
}
⚠️ **GitHub.com Fallback** ⚠️