Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider 7b4d2adb rédigé par Joan DEFOSSE's avatar Joan DEFOSSE :computer:
Parcourir les fichiers

Ajout de documentation concernant FireSimulator.h

parent 09dde9fe
Branches
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -16,7 +16,9 @@ FireSimulator::FireSimulator(Image& img, int i, int j) { ...@@ -16,7 +16,9 @@ FireSimulator::FireSimulator(Image& img, int i, int j) {
assert(img.getPixel(i, j) == Color::Green); assert(img.getPixel(i, j) == Color::Green);
pImg = &img; Image cpImg(img);
pImg = &cpImg;
Analyst a(img); Analyst a(img);
...@@ -50,6 +52,8 @@ FireSimulator::~FireSimulator() { ...@@ -50,6 +52,8 @@ FireSimulator::~FireSimulator() {
vector <Image> FireSimulator::runSimulator(int n) { vector <Image> FireSimulator::runSimulator(int n) {
assert(n >= 0);
vector <Image> tab; vector <Image> tab;
tab.push_back(getImage()); tab.push_back(getImage());
...@@ -73,7 +77,7 @@ void FireSimulator::nextStage() { ...@@ -73,7 +77,7 @@ void FireSimulator::nextStage() {
return; return;
} }
extinguishFire(); if (experienceTime >= 3) extinguishFire();
vector <int> riskArea = unsafeList(); vector <int> riskArea = unsafeList();
......
...@@ -15,9 +15,13 @@ ...@@ -15,9 +15,13 @@
using std::set; using std::set;
// Représente un feu sur le pixel k, allumé lors de l'étape lightTime.
struct Fire { struct Fire {
// Pixel incendié.
int k; int k;
// Naissance de l'incendie sur ce pixel.
int lightTime; int lightTime;
}; };
...@@ -31,35 +35,67 @@ class FireSimulator { ...@@ -31,35 +35,67 @@ class FireSimulator {
public: public:
// Prépare les données pour une simulation d'incendie sur l'image img, dans la zone
// de forêt du pixel k.
FireSimulator(Image& img, int k); FireSimulator(Image& img, int k);
// Prépare les données pour une simulation d'incendie sur l'image img, dans la zone
// de forêt du pixel de coordonnées (i,j).
FireSimulator(Image& img, int i, int j); FireSimulator(Image& img, int i, int j);
// Destructeur, désalloue la mémoire.
~FireSimulator(); ~FireSimulator();
// Fais avancer la simulation de n étapes.
// Retourne les images de chacune des étapes effectuées.
vector <Image> runSimulator(int n); vector <Image> runSimulator(int n);
// Fais avancer la simulation d'une étape.
void nextStage(); void nextStage();
// Retourne l'image de la simulation à l'étape courante.
Image getImage(); Image getImage();
// Retourne l'étape courante.
int getTime(); int getTime();
private: private:
// Repère temporel sur l'état de la simulation. Commence à 0 et s'incrémente à chaque étape.
int experienceTime; int experienceTime;
// Une copie modifiable de l'image de départ de la simulation.
Image* pImg; Image* pImg;
set <int> limitZone, dustZone;
// Définit la zone de forêt dans laquelle l'incendie se déclare. Il ne peut se propager en dehors.
set <int> limitZone;
// Définit l'ensembe des pixels de cendres, issues d'un incendie qui s'est éteint. Un feu ne peut pas s'y déclarer.
set <int> dustZone;
// Définit la zone incendiée. Chaque pixel dans cette zone y est pour une durée temporaire (3 temps).
set <Fire> fireZone; set <Fire> fireZone;
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// Détermine aléatoirement l'emplacement du départ de feu parmi les pixels de limitZone.
// L'ajoute à fireZone. Appelée une fois au début de l'expérience.
void lightFire(); void lightFire();
// Vérifie quels feux doivent être éteints, les retire de fireZone et les ajoute à dustzone.
// Appelée à chaque stade de l'expérience à partir du 3e temps.
void extinguishFire(); void extinguishFire();
// Incrémente experienceTime et actualise l'image courante.
void runTime(); void runTime();
// Actualise l'image courante à partir de fireZone et dustZone.
void refreshImage(); void refreshImage();
// Vrai si le pixel de coordonnées (i2, j2) est une zone de forêt qui touche une zone de flammes.
bool isUnsafe(int i1, int j1, int i2, int j2); bool isUnsafe(int i1, int j1, int i2, int j2);
// Liste de tous les pixels de forêt en contact avec un pixel de flammes.
vector <int> unsafeList(); vector <int> unsafeList();
}; };
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter