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