Nantes Université

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

Fin de la première implémentation de FireSimulator, à debugger

parent 7b4d2adb
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -74,13 +74,20 @@ void FireSimulator::nextStage() { ...@@ -74,13 +74,20 @@ void FireSimulator::nextStage() {
if (experienceTime == 0) { if (experienceTime == 0) {
lightFire(); lightFire();
runTime();
return; return;
} }
if (experienceTime >= 3) extinguishFire(); if (experienceTime >= 3) {
extinguishFire();
}
vector <int> riskArea = unsafeList(); vector <int> riskArea = unsafeList();
spreadFire(riskArea);
runTime(); runTime();
return; return;
...@@ -104,8 +111,6 @@ void FireSimulator::lightFire() { ...@@ -104,8 +111,6 @@ void FireSimulator::lightFire() {
fireZone.insert(f); fireZone.insert(f);
runTime();
return; return;
} }
...@@ -125,6 +130,38 @@ void FireSimulator::extinguishFire() { ...@@ -125,6 +130,38 @@ void FireSimulator::extinguishFire() {
return; return;
} }
void FireSimulator::spreadFire(vector <int> & riskZone) {
int max = riskZone.size();
if (max < 1) {
return;
}
int toAdd = (rand() % max - 1) + 1;
for (int i = 0; i < toAdd; ++i) {
int r = rand() % toAdd;
while (riskZone[r] != -1) {
r = rand() % toAdd;
}
Fire f;
f.k = riskZone[r];
f.lightTime = experienceTime;
fireZone.insert(f);
riskZone[r] = -1;
}
return;
}
void FireSimulator::runTime() { void FireSimulator::runTime() {
refreshImage(); refreshImage();
......
...@@ -23,6 +23,11 @@ struct Fire { ...@@ -23,6 +23,11 @@ struct Fire {
// Naissance de l'incendie sur ce pixel. // Naissance de l'incendie sur ce pixel.
int lightTime; int lightTime;
bool operator<(const Fire other) const {
return k < other.k;
}
}; };
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
...@@ -86,6 +91,9 @@ private: ...@@ -86,6 +91,9 @@ private:
// Appelée à chaque stade de l'expérience à partir du 3e temps. // Appelée à chaque stade de l'expérience à partir du 3e temps.
void extinguishFire(); void extinguishFire();
//
void spreadFire(vector <int> & riskZone);
// Incrémente experienceTime et actualise l'image courante. // Incrémente experienceTime et actualise l'image courante.
void runTime(); void runTime();
......
...@@ -27,5 +27,15 @@ int main(void) ...@@ -27,5 +27,15 @@ int main(void)
randomImg.writeAIP("random"); randomImg.writeAIP("random");
randomImg.writeSVG("random", 20); randomImg.writeSVG("random", 20);
FireSimulator f(img, 1, 1);
vector <Image> tab = f.runSimulator(5);
for (int i = 1; i <= (int) tab.size(); ++i) {
tab[i].writeAIP("img" + i);
tab[i].writeSVG("img" + i, 20);
}
return 0; return 0;
} }
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