Skip to content
Snippets Groups Projects
Commit 6e6fd333 authored by maberet's avatar maberet
Browse files

Merge branch 'fire' into main

parents 19e0df97 0fc7f7e7
No related branches found
No related tags found
No related merge requests found
...@@ -74,11 +74,11 @@ booleen_t searchFire(listchainfire_t listFire, int x ,int y) ...@@ -74,11 +74,11 @@ booleen_t searchFire(listchainfire_t listFire, int x ,int y)
while((listFire!=NULL)&&!(result)) while((listFire!=NULL)&&!(result))
{ {
if(((listFire->fire).x==x)&&((listFire->fire).y==y)) // si on trouve la semaine voulue if(((listFire->fire).x==x)&&((listFire->fire).y==y))
{ {
result= true ;// on chercher si on trouve l'action ou non. result= true ;
} }
listFire=listFire->next; // on passe au suivant. listFire=listFire->next;
} }
return result; return result;
} }
...@@ -87,9 +87,9 @@ listchainfire_t deleteAheadFire(listchainfire_t listFire){ ...@@ -87,9 +87,9 @@ listchainfire_t deleteAheadFire(listchainfire_t listFire){
listchainfire_t listTemporary; listchainfire_t listTemporary;
listTemporary = listFire; // recuperation de la semaine en tête de liste listTemporary = listFire;
listFire = listFire->next; // on avance la liste sur le maillon suivant listFire = listFire->next;
free(listTemporary); // on libere le maillon en tete free(listTemporary);
return listFire; return listFire;
} }
...@@ -120,7 +120,7 @@ listchainfire_t offFire (listchainfire_t listFire, int x ,int y ){ ...@@ -120,7 +120,7 @@ listchainfire_t offFire (listchainfire_t listFire, int x ,int y ){
return(listFire); return(listFire);
} }
if(((listFire->fire).x==x)&&((listFire->fire).y==y)) { if(((listFire->fire).x==x)&&((listFire->fire).y==y)) {
(listFire->fire).state=0; // feu eteint (listFire->fire).state=(listFire->fire).state-1;
} }
else{ else{
listFire->next=offFire(listFire->next,x,y); listFire->next=offFire(listFire->next,x,y);
...@@ -136,4 +136,58 @@ void travelFire(listchainfire_t listFire){ ...@@ -136,4 +136,58 @@ void travelFire(listchainfire_t listFire){
listTemporary=listTemporary->next; listTemporary=listTemporary->next;
} }
//freeListFire(listTemporary); //freeListFire(listTemporary);
} }
\ No newline at end of file
void readFapFromFile(char * filename){
FILE * fp;
int i, j;
fp = fopen(filename, "r");
if(fp == NULL){
printf("Error opening file\n");
exit(1);
}
for(i = 0; i < SIZEMARKOV; i++){
for(j = 0; j < SIZEMARKOV; j++){
fscanf(fp, "%d", &markov[i][j]);
}
}
fclose(fp);
}
void nextFire(listchainfire_t listFire){
int probability;
int state;
int pDead;
int pSparkle;
int pMedium;
int pStrong;
int pSpread;
listchainfire_t listTemporary;
listTemporary= listFire;
srand(time(NULL));
while (!emptyListFire(listTemporary)){
state=(listTemporary->fire).state;
probability= rand()%101;
pDead=markov[state][DEAD]*100;
pSparkle=(markov[state][SPARKLE]+markov[state][DEAD])*100;
pMedium=(markov[state][SPARKLE]+markov[state][DEAD]+markov[state][MEDIUM])*100;
pStrong=(markov[state][SPARKLE]+markov[state][DEAD]+
markov[state][MEDIUM]+markov[state][STRONG])*100;
pSpread=(markov[state][SPARKLE]+markov[state][DEAD]+
markov[state][MEDIUM]+markov[state][STRONG]+markov[state][SPREAD])*100;
if (0<=probability<pDead){(listTemporary->fire).state=DEAD;}
else if (pDead<=probability<pSparkle){(listTemporary->fire).state=SPARKLE;}
else if (pSparkle<=probability<pMedium){(listTemporary->fire).state=MEDIUM;}
else if (pMedium<=probability<pStrong){(listTemporary->fire).state=STRONG;}
else {(listTemporary->fire).state=SPREAD;}
listTemporary=listTemporary->next;
}
}
\ No newline at end of file
...@@ -7,12 +7,18 @@ ...@@ -7,12 +7,18 @@
#include <stdio.h> #include <stdio.h>
#define SIZEMARKOV 4 #define SIZEMARKOV 4
#define DEAD 0
#define SPARKLE 1
#define MEDIUM 2
#define STRONG 3
#define SPREAD 4
typedef struct fire{ typedef struct fire{
int x; int x;
int y; int y;
int state; // { dead 0 ;sarkle 1 ; medium_fire 2 ; strong_fire 3} int state; // { dead 0 ;sarkle 1 ; medium_fire 2 ; strong_fire 3; preading 4}
}fire_t; }fire_t;
...@@ -39,5 +45,8 @@ listchainfire_t deleteFire (listchainfire_t, int ,int ); ...@@ -39,5 +45,8 @@ listchainfire_t deleteFire (listchainfire_t, int ,int );
listchainfire_t freeListFire (listchainfire_t ); listchainfire_t freeListFire (listchainfire_t );
listchainfire_t offFire (listchainfire_t, int,int ); listchainfire_t offFire (listchainfire_t, int,int );
void travelFire(listchainfire_t listFire); void travelFire(listchainfire_t listFire);
void readFapFromFile(char * filename);
void nextFire(listchainfire_t );
#endif #endif
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment