diff --git a/travail_de_groupe/chef_oeuvre/src/fire.c b/travail_de_groupe/chef_oeuvre/src/fire.c index 79590fc114213d9d85437137692f2aa06873044a..2c7d77a66d103743c94d577d0dcaec84bafcc56b 100644 --- a/travail_de_groupe/chef_oeuvre/src/fire.c +++ b/travail_de_groupe/chef_oeuvre/src/fire.c @@ -17,3 +17,94 @@ booleen_t emptyListFire(listchainfire_t listFire) return (result); } +listchainfire_t insertAheadFire(fire_t fire,listchainfire_t listFire) +{ + chainfire_t *m; + m=(chainfire_t*)malloc(sizeof(chainfire_t)); + + if (m==NULL) + { + printf("problème d'allocation \n"); + exit(1); + } + if (!searchFire(listFire,fire.x,fire.y)){ + m->fire=fire; + m->next= listFire; + listFire=m;} + + return listFire; + +} + +listchainfire_t startFire(listchainfire_t listFire,int numberFire, int mapSize){ + + int i; + int xFire=0; + int yFire=0; + + fire_t fire; + + if (emptyListFire(listFire)){ + for (i=0;i<numberFire;i++){ + srand(time(NULL)); + xFire= rand()%mapSize; + srand(time(NULL)); + xFire= rand()%mapSize; + + fire.x= xFire; + fire.y= yFire; + fire.state=1; + + listFire=insertAheadFire(fire, listFire); + + } + } + return (listFire); +} + + +booleen_t searchFire(listchainfire_t listFire, int x ,int y) +{ + booleen_t result = false; + + while((listFire!=NULL)||!(result)) + { + if(((listFire->fire).x==x)&&((listFire->fire).y==y)) // si on trouve la semaine voulue + { + result= true ;// on chercher si on trouve l'action ou non. + } + listFire=listFire->next; // on passe au suivant. + } + return result; +} + +listchainfire_t deleteAheadFire(listchainfire_t listFire){ + + listchainfire_t listTemporary; + + listTemporary = listFire; // recuperation de la semaine en tête de liste + listFire = listFire->next; // on avance la liste sur le maillon suivant + free(listTemporary); // on libere le maillon en tete + return listFire; +} + +listchainfire_t deleteFire (listchainfire_t listFire, int x ,int y ){ + + if (emptyListFire(listFire)){ + return(listFire); + } + if(((listFire->fire).x==x)&&((listFire->fire).y==y)) { + listFire= deleteAheadFire( listFire); + } + else{ + listFire->next=deleteFire(listFire->next,x,y); + } + return listFire; +} + +listchainfire_t freeListFire (listchainfire_t listFire){ + while (emptyListFire(listFire)){ + listFire=deleteAheadFire(listFire); + } + return listFire; +} diff --git a/travail_de_groupe/chef_oeuvre/src/fire.h b/travail_de_groupe/chef_oeuvre/src/fire.h index 5ab4019819fc52302bf263c71abe03739ef27897..1e9ef245648a925b9ea128186a129706d789eadd 100644 --- a/travail_de_groupe/chef_oeuvre/src/fire.h +++ b/travail_de_groupe/chef_oeuvre/src/fire.h @@ -3,6 +3,9 @@ #include "main.h" #include "gest_event.h" +#include <time.h> +#include <stdio.h> + typedef struct fire{ int x; @@ -23,9 +26,12 @@ typedef struct chain { }chainfire_t,*listchainfire_t; listchainfire_t initFire(void); +booleen_t emptyListFire(listchainfire_t); listchainfire_t insertAheadFire(fire_t, listchainfire_t); -booleen_t emptyListFire(listchainfire_t); - - +listchainfire_t startFire(listchainfire_t ,int , int ); +booleen_t searchFire(listchainfire_t, int ,int); +listchainfire_t deleteAheadFire(listchainfire_t); +listchainfire_t deleteFire (listchainfire_t, int ,int ); +listchainfire_t freeListFire (listchainfire_t ); #endif \ No newline at end of file