diff --git a/travail_de_groupe/chef_oeuvre/src/fire.c b/travail_de_groupe/chef_oeuvre/src/fire.c
index 61289d5cbc08e62603c62e46da4c5877bfc4b9f0..fb0c37d24f942dce9c0614e94e17683e78c4c739 100644
--- a/travail_de_groupe/chef_oeuvre/src/fire.c
+++ b/travail_de_groupe/chef_oeuvre/src/fire.c
@@ -31,11 +31,11 @@ listchainfire_t insertAheadFire(fire_t fire,listchainfire_t listFire)
         printf("problème d'allocation \n");
         exit(1);
     }
-    if (!searchFire(listFire,fire.x,fire.y)){
-    m->fire=fire;
-    m->next= listFire;
-    listFire=m;}
-
+    if ((!searchFire(listFire,fire.x,fire.y))&&(map[fire.x][fire.y]!=2)){
+            m->fire=fire;
+            m->next= listFire;
+            listFire=m;
+    }
     return listFire;
 
 }
@@ -55,7 +55,6 @@ listchainfire_t startFire(listchainfire_t listFire,int numberFire, int mapSize){
             xFire= rand()%mapSize;
 
             yFire= rand()%mapSize;
-            printf("xf:%d,yf:%d\n",xFire,yFire);
             fire.x= xFire;
             fire.y= yFire; 
             fire.state=1;
@@ -132,10 +131,9 @@ void travelFire(listchainfire_t listFire){
     listchainfire_t listTemporary=listFire;
 
     while(listTemporary!=NULL){
-        printf("x:%d,y:%d\n",(listTemporary->fire).x,(listTemporary->fire).y);
+        //printf("x:%d,y:%d\n",(listTemporary->fire).x,(listTemporary->fire).y);
         listTemporary=listTemporary->next;
     }
-    //freeListFire(listTemporary);
 }
 
 void readFapFromFile(char * filename){
@@ -185,9 +183,61 @@ void nextFire(listchainfire_t listFire){
         else if ((pMedium<=probability)&&(probability<pStrong)){(listTemporary->fire).state=STRONG;}
         else {(listTemporary->fire).state=SPREAD;}
 
-        printf("%d %d\n", probability, state);
-        printf("%d %d %d %d\n", pDead, pSparkle, pMedium, pStrong);
-
         listTemporary=listTemporary->next;   
     }
-} 
\ No newline at end of file
+} 
+
+listchainfire_t probabilitySpreadFire( listchainfire_t listFire, listchainfire_t listTemporary){
+    int probability;
+    fire_t fire; 
+ 
+    probability= rand()%4;
+
+    if((probability==0)&&((listTemporary->fire).x+1<MAPSIZE)){fire.state=1;
+        fire.x=(listTemporary->fire).x+1;
+        fire.y=(listTemporary->fire).y;
+        listFire=insertAheadFire(fire,listFire);
+        }
+    if ((probability==1)&&((listTemporary->fire).y+1<MAPSIZE)){fire.state=1;
+        fire.x=(listTemporary->fire).x;
+        fire.y=(listTemporary->fire).y+1;
+        listFire=insertAheadFire(fire,listFire);
+        }
+    if ((probability==2)&&((listTemporary->fire).y-1>=0)){fire.state=1;
+        fire.x=(listTemporary->fire).x;
+        fire.y=(listTemporary->fire).y-1;
+        listFire=insertAheadFire(fire,listFire);
+        }
+    if ((probability==3)&&((listTemporary->fire).x-1>=0)){fire.state=1;
+        fire.x=(listTemporary->fire).x-1;
+        fire.y=(listTemporary->fire).y;
+        listFire=insertAheadFire(fire,listFire);
+        }
+    return listFire;
+}
+
+listchainfire_t spreadFire (listchainfire_t listFire){
+    listchainfire_t listTemporary=fireList;
+    srand(time(NULL));
+    while (!emptyListFire(listTemporary)){
+        if ((listTemporary->fire).state==4){
+            
+            listFire=probabilitySpreadFire(listFire, listTemporary); 
+        }
+        listTemporary=listTemporary->next; 
+    }
+    return listFire;
+}
+
+booleen_t winGame(listchainfire_t listFire){
+    booleen_t win = true;
+    listchainfire_t listTemporary= listFire; 
+    
+    while (!emptyListFire( listTemporary)){
+        if ((listTemporary->fire).state!=0){
+            win= false;
+            break;
+        }
+    }
+    return win;
+}
\ No newline at end of file
diff --git a/travail_de_groupe/chef_oeuvre/src/fire.h b/travail_de_groupe/chef_oeuvre/src/fire.h
index 975fb32c8b02dcf758c617e56c8c41c763961fc3..5a41da698c245064c7e0a314b671e9aec4527274 100644
--- a/travail_de_groupe/chef_oeuvre/src/fire.h
+++ b/travail_de_groupe/chef_oeuvre/src/fire.h
@@ -13,6 +13,7 @@
 #define STRONG 3
 #define SPREAD 4
 
+#define UPDATETIME 10
 
 
 typedef struct fire{
@@ -44,9 +45,12 @@ listchainfire_t deleteAheadFire(listchainfire_t);
 listchainfire_t deleteFire (listchainfire_t, int ,int );
 listchainfire_t freeListFire (listchainfire_t );
 listchainfire_t offFire (listchainfire_t, int,int );
-void travelFire(listchainfire_t listFire);
+void travelFire(listchainfire_t );
 void readFapFromFile(char * filename);
 void nextFire(listchainfire_t );
+listchainfire_t probabilitySpreadFire( listchainfire_t, listchainfire_t);
+listchainfire_t spreadFire (listchainfire_t );
+booleen_t winGame(listchainfire_t );
 
 
 
diff --git a/travail_de_groupe/chef_oeuvre/src/main.c b/travail_de_groupe/chef_oeuvre/src/main.c
index 2ce91a51061e2f16521276e0e43cc90a0bfd3a93..71aadadc0fd3ee755877e42fad0e225eb8c4ade0 100644
--- a/travail_de_groupe/chef_oeuvre/src/main.c
+++ b/travail_de_groupe/chef_oeuvre/src/main.c
@@ -10,9 +10,8 @@ int main(){
     readMapFromFile("map.txt");
     readFapFromFile("markov.txt");
     fireList = startFire(fireList,10,MAPSIZE);
-    travelFire(fireList);
-    nextFire(fireList);
     nextFire(fireList);
     nextFire(fireList);
+
     mainLoop();
 } 
\ No newline at end of file
diff --git a/travail_de_groupe/chef_oeuvre/src/map.h b/travail_de_groupe/chef_oeuvre/src/map.h
index a9b6c5820fd075361959bdb42ba62b0bc039233d..adbfbc6805e4b57cb8f3c8c99773d122918152f2 100644
--- a/travail_de_groupe/chef_oeuvre/src/map.h
+++ b/travail_de_groupe/chef_oeuvre/src/map.h
@@ -5,6 +5,9 @@
 
 #define MAPSIZE 20
 
+#define TREE 1
+#define WATER 2
+
 extern int map[MAPSIZE][MAPSIZE];
 
 void readMapFromFile(char * filename);
diff --git a/travail_de_groupe/chef_oeuvre/src/player.c b/travail_de_groupe/chef_oeuvre/src/player.c
index 865f3a155734ad29523334da798fcb11935dac56..a722ebbb7dbefb4a4dd61dd59757a50e20193d90 100644
--- a/travail_de_groupe/chef_oeuvre/src/player.c
+++ b/travail_de_groupe/chef_oeuvre/src/player.c
@@ -12,6 +12,10 @@ void initPlayer(){
     player.currentWater = player.waterMax;
     player.speed = 1;
     player.isMoving = 0;
+    player.HPMax = 3;
+    player.currentHP = player.HPMax;
+    player.invisible = 0;
+    player.invisibleTime = 5;
 }
 
 int giveCaseBelowPosition(int x, int y){
@@ -20,128 +24,154 @@ int giveCaseBelowPosition(int x, int y){
     return map[y2][x2];
 }
 
-int collisionsLeftPlayer(){
-    int collision = 0;
-    int dotTopLeft = giveCaseBelowPosition(player.x, player.y);
-    int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h);
-    //collision window
-    if(player.x <= 0){
-        collision = 1;
+int getPositionXInMap(int x){
+    int x2 = x/CELLSIZE;
+    return x2;
+}
+
+int getPositionYInMap(int y){
+    int y2 = y/CELLSIZE;
+    return y2;
+}
+
+int checkCollisionsTypeGround(int dot1, int dot2, int typeGround){
+    int coll = 0;
+    if(dot1==typeGround || dot2==typeGround){
+        coll = 1;
     }
-    //collision tree
-    if(dotTopLeft==1 || dotDownLeft==1){
-        collision = 1;
+    return coll;
+}
+
+int collisionsCaseSolid(int dot1, int dot2){
+    return checkCollisionsTypeGround(dot1, dot2, TREE)
+        || checkCollisionsTypeGround(dot1, dot2, WATER);
+}
+
+/*int collisionsWindow(){
+
+}*/
+
+void checkCollisionsFire(int dot1, int dot2){
+    if(player.invisible==0 && (dot1==1 || dot2==1) && player.currentHP>0){
+        player.currentHP = player.currentHP - 1;
+        player.invisible = 1;
+        player.timeLastHitFire = (int)timer/1000;
     }
-    //collision water
-    if(dotTopLeft==2 || dotDownLeft==2){
-        collision = 1;
+}
+
+int collisionsLeftPlayer(int dot1, int dot2){
+    int collisionWindow = 0;
+    int collisionCaseSolid = 0;
+    //collision window
+    if(player.x <= 0){
+        collisionWindow = 1;
     }
-    return collision;
+    //collisions
+    collisionCaseSolid = collisionsCaseSolid(dot1, dot2);
+    return collisionWindow || collisionCaseSolid;
 }
 
-int collisionsRightPlayer(){
-    int collision = 0;
-    int dotTopRight = giveCaseBelowPosition(player.x+player.w, player.y);
-    int dotDownRight = giveCaseBelowPosition(player.x+player.w, player.y+player.h);
+int collisionsRightPlayer(int dot1, int dot2){
+    int collisionWindow = 0;
+    int collisionCaseSolid = 0;
     //collision window
     if(player.x + player.w >= MAPSIZE * CELLSIZE){
-        collision = 1;
-    }
-    //collision tree
-    if(dotTopRight==1 || dotDownRight==1){
-        collision = 1;
-    }
-    //collision water
-    if(dotTopRight==2 || dotDownRight==2){
-        collision = 1;
+        collisionWindow = 1;
     }
-    return collision;
+    //collisions
+    collisionCaseSolid = collisionsCaseSolid(dot1, dot2);
+    return collisionWindow || collisionCaseSolid;
 }
 
-int collisionsUpPlayer(){
-    int collision = 0;
-    int dotTopRight = giveCaseBelowPosition(player.x+player.w, player.y);
-    int dotTopLeft = giveCaseBelowPosition(player.x, player.y);
+int collisionsUpPlayer(int dot1, int dot2){
+    int collisionWindow = 0;
+    int collisionCaseSolid = 0;
     //collision window
     if(player.y <= 0){
-        collision = 1;
-    }
-    //collision tree
-    if(dotTopRight==1 || dotTopLeft==1){
-        collision = 1;
+        collisionWindow = 1;
     }
-    //collision water
-    if(dotTopRight==2 || dotTopLeft==2){
-        collision = 1;
-    }
-    return collision;
+    //collisions solide like tree or water or rock(in the future)
+    collisionCaseSolid = collisionsCaseSolid(dot1, dot2);
+    return collisionWindow || collisionCaseSolid;
 }
 
-int collisionsDownPlayer(){
-    int collision = 0;
-    int dotDownRight = giveCaseBelowPosition(player.x+player.w, player.y+player.h);
-    int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h);
+int collisionsDownPlayer(int dot1, int dot2){
+    int collisionWindow = 0;
+    int collisionCaseSolid = 0;
     //collision window
     if(player.y + player.h >= MAPSIZE * CELLSIZE){
-        collision = 1;
+        collisionWindow = 1;
     }
-    //collision tree
-    if(dotDownRight==1 || dotDownLeft==1){
-        collision = 1;
-    }
-    //collision water
-    if(dotDownRight==2 || dotDownLeft==2){
-        collision = 1;
-    }
-    return collision;
+    //collisions
+    collisionCaseSolid = collisionsCaseSolid(dot1, dot2);
+    return collisionWindow || collisionCaseSolid;
 }
 
 void moveRightPlayer(){
-    if(!collisionsRightPlayer()){
-        player.x = player.x + player.speed;
-    }
+    player.x = player.x + player.speed;
 }
 
 void moveLeftPlayer(){
-    if(!collisionsLeftPlayer()){
-        player.x = player.x - player.speed;
-    }
+    player.x = player.x - player.speed;
 }
 
 void moveUpPlayer(){
-    if(!collisionsUpPlayer()){
-        player.y = player.y - player.speed;
-    }
+    player.y = player.y - player.speed;
 }
 
 void moveDownPlayer(){
-    if(!collisionsDownPlayer()){
-        player.y = player.y + player.speed;
-    }
+    player.y = player.y + player.speed;
 }
 
 void manageMovement(){
+    int dotTopRight = giveCaseBelowPosition(player.x+player.w, player.y);
+    int dotTopLeft = giveCaseBelowPosition(player.x, player.y);
+    int dotDownRight = giveCaseBelowPosition(player.x+player.w, player.y+player.h);
+    int dotDownLeft = giveCaseBelowPosition(player.x, player.y+player.h);
+    int fireTopRight = searchFire(fireList, getPositionXInMap(player.x+player.w), getPositionYInMap(player.y));
+    int fireTopLeft = searchFire(fireList, getPositionXInMap(player.x), getPositionYInMap(player.y));
+    int fireDownRight = searchFire(fireList, getPositionXInMap(player.x+player.w), getPositionYInMap(player.y+player.h));
+    int fireDownLeft = searchFire(fireList, getPositionXInMap(player.x), getPositionYInMap(player.y+player.h));
+
     if(keys[PLAYER_UP]){
-        moveUpPlayer();
-        player.isMoving = 1;
-        player.direction = PLAYER_UP;
+        if(!collisionsUpPlayer(dotTopRight, dotTopLeft)){
+            moveUpPlayer();
+            checkCollisionsFire(fireTopRight, fireTopLeft);
+            player.isMoving = 1;
+            player.direction = PLAYER_UP;
+        }
     }
     else if(keys[PLAYER_DOWN]){
-        moveDownPlayer();
-        player.isMoving = 1;
-        player.direction = PLAYER_DOWN;
+        if(!collisionsDownPlayer(dotDownRight, dotDownLeft)){
+            moveDownPlayer();
+            checkCollisionsFire(fireDownRight, fireDownLeft);
+            player.isMoving = 1;
+            player.direction = PLAYER_DOWN;
+        }
     }
     else if(keys[PLAYER_LEFT]){
-        moveLeftPlayer();
-        player.isMoving = 1;
-        player.direction = PLAYER_LEFT;
+        if(!collisionsLeftPlayer(dotTopLeft, dotDownLeft)){
+            moveLeftPlayer();
+            checkCollisionsFire(fireTopLeft, fireDownLeft);
+            player.isMoving = 1;
+            player.direction = PLAYER_LEFT;
+        }
     }
     else if(keys[PLAYER_RIGHT]){
-        moveRightPlayer();
-        player.isMoving = 1;
-        player.direction = PLAYER_RIGHT;
+        if(!collisionsRightPlayer(dotTopRight, dotDownRight)){
+            moveRightPlayer();
+            checkCollisionsFire(fireTopRight, fireDownRight);
+            player.isMoving = 1;
+            player.direction = PLAYER_RIGHT;    
+        }
     }
     else player.isMoving = 0;
+    //
+    if(player.invisible==1){
+        if((int)timer/1000 - player.timeLastHitFire > player.invisibleTime){
+            player.invisible = 0;
+        }
+    }
 }
 
 int selectStateHover(){
@@ -153,7 +183,6 @@ int selectStateHover(){
     return stateHover;
 }
 
-
 void pourWater(int x, int y){
     int onFire = searchFire(fireList, x, y);     
     if(player.currentWater>0){
diff --git a/travail_de_groupe/chef_oeuvre/src/player.h b/travail_de_groupe/chef_oeuvre/src/player.h
index 387cf001c1dcde003a376e123739a23e158ebbbe..b0b2253d9de191eb31765e0829459949a217cfc4 100644
--- a/travail_de_groupe/chef_oeuvre/src/player.h
+++ b/travail_de_groupe/chef_oeuvre/src/player.h
@@ -19,6 +19,11 @@ typedef struct player{
     int speed;
     int isMoving;
     int direction;
+    int HPMax;
+    int currentHP;
+    int invisible;
+    int invisibleTime;
+    int timeLastHitFire;
 } player_t;
 
 extern player_t player;
diff --git a/travail_de_groupe/chef_oeuvre/src/render.c b/travail_de_groupe/chef_oeuvre/src/render.c
index 93ec722c0398dd269086a3f7e79a0928194cdca4..b633e43b7b8aa4b64aa6db6fcc7ce424accbeae7 100644
--- a/travail_de_groupe/chef_oeuvre/src/render.c
+++ b/travail_de_groupe/chef_oeuvre/src/render.c
@@ -241,6 +241,25 @@ void drawPlayerWaterLevel(){
     }
 }
 
+void drawPlayerHP(){
+    int borderWidth = (screenDimension.w - (MAPSIZE * CELLSIZE))/2;
+    SDL_Rect rect;
+    rect.h = borderWidth/player.HPMax;
+    rect.w = rect.h;
+    int count = player.currentHP;
+    for (int i=0; i<player.HPMax; i++){
+        rect.x = (i*rect.h);
+        rect.y = screenDimension.h - 3 * rect.h;
+        if (count){
+            count--;
+            SDL_RenderCopy(renderer, filledBucketTexture, NULL, &rect);
+        }
+        else {
+            SDL_RenderCopy(renderer, emptyBucketTexture, NULL, &rect);
+        }
+    }
+}
+
 void drawScore(){
     SDL_Rect rect;
     rect.h = screenDimension.h/6;
@@ -250,7 +269,7 @@ void drawScore(){
     SDL_RenderCopy(renderer, scoreTexture, NULL, &rect);
     rect.y += rect.h;
     char str[10];
-    sprintf(str, "%d", score);
+    //sprintf(str, "%d", score);
     SDL_Color textColor = {237,222,17};
     SDL_Surface * surface = TTF_RenderText_Solid(robotoFont, str, textColor);
     SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, surface);
@@ -266,7 +285,8 @@ void drawTime(){
     SDL_RenderCopy(renderer, scoreTexture, NULL, &rect);
     rect.y += rect.h;
     char str[10];
-    sprintf(str, "%d", (int)timer/1000);
+    printf("%d\n", (UPDATETIME * 1000 - (int)timer % (UPDATETIME * 1000))/1000);
+    sprintf(str, "%d", (UPDATETIME * 1000 - (int)timer % (UPDATETIME * 1000))/1000);
     SDL_Color textColor = {237,222,17};
     SDL_Surface * surface = TTF_RenderText_Solid(robotoFont, str, textColor);
     SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, surface);
@@ -280,6 +300,7 @@ void drawGame(){
     drawPlayer();
     drawFire();
     drawPlayerWaterLevel();
+    drawPlayerHP();
     drawScore();
     drawTime();
     SDL_RenderPresent(renderer);
@@ -365,16 +386,16 @@ void mainLoop(){
         delta = (a - b);
         if (delta > 1000/FPS_TO_GET){
             timer += delta;
-            printf("timer : %f\n", timer/1000);
+            printf("%d\n", (int)timer % 1000);
             b = a;
-            printf("fps : %f", 1000/delta);
             switch (gameState){
                 case MENU:
                     drawMenu();
                     break;
                 case GAME:
-                    if ((int)timer/1000 % 5 == 0){
+                    if ((int)timer % (UPDATETIME * 1000) < 10){
                         nextFire(fireList);
+                        fireList=spreadFire(fireList);
                     }
                     drawGame();
                     break;
diff --git a/travail_de_groupe/chef_oeuvre/src/render.h b/travail_de_groupe/chef_oeuvre/src/render.h
index 1af4a2722d4abd4406370e24b62f13bf0e6fca40..e48f6490fda5bab38584450152ee9c86df4130fd 100644
--- a/travail_de_groupe/chef_oeuvre/src/render.h
+++ b/travail_de_groupe/chef_oeuvre/src/render.h
@@ -12,6 +12,7 @@ extern SDL_Window *window;
 extern SDL_Renderer *renderer;
 extern SDL_DisplayMode screenDimension;
 extern SDL_Rect buttonRect;
+extern float timer;
 
 void drawHover(int x, int y);
 void mainLoop();
diff --git a/travail_individuel/Belkhiri/GameOfLife/map.txt b/travail_individuel/Belkhiri/GameOfLife/map.txt
index 461edd9ede9574c368e0a332b974a7cc4411ffe4..e1675d706023eec98ae79de728e946b3732dcfda 100644
--- a/travail_individuel/Belkhiri/GameOfLife/map.txt
+++ b/travail_individuel/Belkhiri/GameOfLife/map.txt
@@ -1,5 +1,20 @@
-0 0 0 0 0 
-0 0 0 0 0 
-0 1 0 1 0 
-0 0 0 0 0 
-0 0 0 0 0 
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 
+0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 
+0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
diff --git a/travail_individuel/Belkhiri/GameOfLife/niveau.txt b/travail_individuel/Belkhiri/GameOfLife/niveau.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2abba445ada331c69fba8269989148b4e96fe1be
--- /dev/null
+++ b/travail_individuel/Belkhiri/GameOfLife/niveau.txt
@@ -0,0 +1,21 @@
+20
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0
+0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
+0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0
+0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
\ No newline at end of file
diff --git a/travail_individuel/Belkhiri/GameOfLife/run b/travail_individuel/Belkhiri/GameOfLife/run
new file mode 100755
index 0000000000000000000000000000000000000000..2c5ecb423a6c0ea008391fc6cd62739890144d7e
Binary files /dev/null and b/travail_individuel/Belkhiri/GameOfLife/run differ
diff --git a/travail_individuel/Belkhiri/GameOfLife/src/main.c b/travail_individuel/Belkhiri/GameOfLife/src/main.c
new file mode 100644
index 0000000000000000000000000000000000000000..4ddfe75d73c117bd3ce0eb10b6074e221669f48d
--- /dev/null
+++ b/travail_individuel/Belkhiri/GameOfLife/src/main.c
@@ -0,0 +1,21 @@
+#include "main.h"
+
+int running;
+int game_state;
+
+
+int main(int argc, char** argv){
+    running = 1;
+    game_state = MENU;
+
+    initMap();
+
+    if(argc == 3){
+        game_state = GAME;
+        chargeNiveauFichier(argv[2], map, atoi(argv[1]));
+        printf("3 arg\n");
+    }
+
+    MainLoop();
+
+}
\ No newline at end of file
diff --git a/travail_individuel/Belkhiri/GameOfLife/src/map.c b/travail_individuel/Belkhiri/GameOfLife/src/map.c
index 29713a65d5bd051ec1ad3887d987cd5525de4fdb..b1de396136e3083db4d717de4ae7542fa72b9225 100644
--- a/travail_individuel/Belkhiri/GameOfLife/src/map.c
+++ b/travail_individuel/Belkhiri/GameOfLife/src/map.c
@@ -62,4 +62,36 @@ long long int MapToBinary(int ** map)
         }
     }
     return binary;
+}
+
+void chargeNiveauFichier(char *nom_fichier, int ** monde, int nbrLigne){
+    FILE *fichier = NULL;
+    int valeur;
+    int ligne = -1;
+    int colonne = 0;
+
+    fichier = fopen(nom_fichier, "r");
+    if(fichier != NULL){
+        while(fscanf(fichier, "%d", &valeur) != EOF){
+            if(ligne == -1){
+                MAPSIZE = valeur;
+                if(MAPSIZE != nbrLigne){
+                    printf("PROBLEME DE DIMENSION\n");
+                    return;
+                }
+                ligne = 0;
+            }else{
+                map[ligne][colonne] = valeur;
+                colonne = colonne + 1;
+                if(colonne==MAPSIZE){
+                    ligne = ligne + 1;
+                    colonne = 0;
+                    if(ligne==MAPSIZE){
+                        break;
+                    }
+                }
+            }
+        }
+    }
+    fclose(fichier);
 }
\ No newline at end of file
diff --git a/travail_individuel/Belkhiri/GameOfLife/src/map.h b/travail_individuel/Belkhiri/GameOfLife/src/map.h
index 7a47a8b2fb659c76aafa9d2b53ac8f09b8584c7a..d0408906dde3c54a561860d8597d64c99ca4fde1 100644
--- a/travail_individuel/Belkhiri/GameOfLife/src/map.h
+++ b/travail_individuel/Belkhiri/GameOfLife/src/map.h
@@ -10,5 +10,6 @@ void printMap();
 void initMap();
 void writeMap(char* filename);
 long long int MapToBinary(int ** map);
+void chargeNiveauFichier(char *, int **, int);
 
 #endif
\ No newline at end of file