Architecture du Projet - JulianKerignard/ProjetJeuDeLaVie_POO GitHub Wiki
Architecture du Projet 🏗️
Introduction à l'Architecture du Projet
L'architecture du projet du Jeu de la Vie est conçue pour être modulaire et extensible, permettant ainsi d'ajouter facilement de nouvelles fonctionnalités et de maintenir le code de manière efficace. Le projet est divisé en plusieurs composants clés, chacun ayant une responsabilité distincte.
Structure du Code 📂
Voici un aperçu des principaux répertoires et fichiers du projet :
/Code
├── /CPP
│ ├── main.cpp
│ ├── Cell.cpp
│ ├── Grid.cpp
│ ├── game.cpp
│ ├── FileHandler.cpp
│ ├── DisplayManager.cpp
│ ├── ConsoleDisplay.cpp
│ ├── GraphicalDisplay.cpp
│ ├── ThreadPool.cpp
│ └── RleReader.cpp
├── /Headers
│ ├── Cell.h
│ ├── Grid.h
│ ├── game.h
│ ├── FileHandler.h
│ ├── DisplayManager.h
│ ├── ConsoleDisplay.h
│ ├── GraphicalDisplay.h
│ ├── ThreadPool.h
│ └── RleReader.h
/tests
├── test_Cell.cpp
├── test_Grid.cpp
├── test_Game.cpp
├── test_FileHandler.cpp
├── test_DisplayManager.cpp
├── test_ConsoleDisplay.cpp
├── test_GraphicalDisplay.cpp
├── test_ThreadPool.cpp
└── test_RleReader.cpp
Composants Principaux 🧩
1. Main (main.cpp)
Le point d'entrée du programme. Il initialise et démarre le jeu, et peut configurer des paramètres globaux comme la taille de la grille ou la vitesse de simulation.
2. Cell (Cell.cpp, Cell.h)
Représente une cellule individuelle dans la grille du Jeu de la Vie. Cette classe gère l'état de la cellule (vivante ou morte) et les transitions d'état en fonction des règles du jeu.
3. Grid (Grid.cpp, Grid.h)
Représente la grille de cellules. Elle contient une collection de cellules et est responsable de mettre à jour les états des cellules à chaque génération en appliquant les règles du jeu.
4. Game (game.cpp, game.h)
Gère la logique du jeu. Cette classe coordonne les différentes composantes, comme la grille, l'affichage, et les entrées utilisateur. Elle orchestre le déroulement des générations et les interactions.
5. FileHandler (FileHandler.cpp, FileHandler.h)
Gère la lecture et l'écriture des fichiers de configuration de la grille (formats .txt
, .rle
, et .cells
). Cette classe permet de charger des motifs depuis des fichiers et de sauvegarder l'état actuel de la grille.
6. DisplayManager (DisplayManager.cpp, DisplayManager.h)
Coordonne les différents modes d'affichage (console et graphique). Il choisit le mode d'affichage approprié en fonction des paramètres de l'utilisateur ou du fichier de configuration.
7. ConsoleDisplay (ConsoleDisplay.cpp, ConsoleDisplay.h)
Gère l'affichage du jeu dans la console. Cette classe imprime l'état de la grille sur la console à chaque génération.
8. GraphicalDisplay (GraphicalDisplay.cpp, GraphicalDisplay.h)
Gère l'affichage graphique en utilisant SFML. Cette classe dessine les cellules sur une fenêtre graphique et permet une interaction visuelle plus riche.
9. ThreadPool (ThreadPool.cpp, ThreadPool.h)
Gère l'exécution parallèle des tâches. Utilisé pour améliorer les performances du calcul des générations en utilisant plusieurs threads.
10. RleReader (RleReader.cpp, RleReader.h)
Spécialisé dans la lecture des fichiers au format RLE. Cette classe décode les fichiers RLE et configure la grille en conséquence.
Tests Unitaires 🧪
Structure des Tests
Les tests unitaires sont situés dans le répertoire tests
et utilisent GoogleTest pour vérifier que chaque composant fonctionne correctement. Chaque fichier de test se concentre sur un composant spécifique :
test_Cell.cpp
: Tests pour la classeCell
.test_Grid.cpp
: Tests pour la classeGrid
.test_Game.cpp
: Tests pour la classeGame
.test_FileHandler.cpp
: Tests pour la classeFileHandler
.test_DisplayManager.cpp
: Tests pour la classeDisplayManager
.test_ConsoleDisplay.cpp
: Tests pour la classeConsoleDisplay
.test_GraphicalDisplay.cpp
: Tests pour la classeGraphicalDisplay
.test_ThreadPool.cpp
: Tests pour la classeThreadPool
.test_RleReader.cpp
: Tests pour la classeRleReader
.
Pour plus d'informations aller sur cette page (https://github.com/JulianKerignard/ProjetJeuDeLaVie_POO/wiki/Guide-d'utilisation-des-tests-unitaires-via-GoogleTest-%F0%9F%9B%A0%EF%B8%8F)