diff --git a/travail_de_groupe/jeu_appren_par_renfo/map.txt b/travail_de_groupe/jeu_appren_par_renfo/map.txt
index d6e01f65207317b588d271d05e59c8c595a4dd00..684beb70d028a51a8a1368bd7bcc9e7a8c71e1b3 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/map.txt
+++ b/travail_de_groupe/jeu_appren_par_renfo/map.txt
@@ -6,8 +6,8 @@
 1 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 1
 1 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 1
 1 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 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 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 1
+1 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 1
+1 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 1
 1 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 1
 1 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 1
 1 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 1
diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.c b/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.c
index aefb6558ba9509d558cb62a57d485f09e56fa6f2..8072c078c153854cbe879c71f25a75890e37d475 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.c
@@ -30,11 +30,51 @@ void gestMenu(){
 }
 
 
+
+void gestGame(){
+    SDL_Event event;
+    while (SDL_PollEvent(&event)){
+            switch(event.type)
+            {   
+                case SDL_QUIT:
+                    running = 0;
+                    break;
+
+                case SDL_MOUSEMOTION:
+                    if (event.motion.xrel > 0){
+                        player.angle += 0.01;
+                        if (player.angle > 2*pi) player.angle -= 2*pi;
+                    }
+                    else if (event.motion.xrel < 0){
+                        player.angle -= 0.01;
+                        if (player.angle < 0) player.angle += 2*pi;
+                    }
+
+                case SDL_KEYUP:
+                    switch (event.key.keysym.sym)
+                    {
+                    case SDLK_ESCAPE:
+                        running = 0;
+                        continue;
+
+                    default:
+                        continue;
+                    }
+                    break;
+
+                default:
+                    continue;
+            }
+    }
+    SDL_Delay(5);
+}
+
+
 void *EventLoop(void *arg){
     while(running){
         switch(game_state){
             case MENU : gestMenu();break;
-            case GAME : gestMenu();break;
+            case GAME : gestGame();break;
             default:printf("game state fault");break;
         }
     }
diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/main.c b/travail_de_groupe/jeu_appren_par_renfo/src/main.c
index 7ca6b39f5741c10f6c1052e6074791e7a3f0f337..ac05036e66735a4cdcbe30b8ebc7ffcf21111139 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/src/main.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/src/main.c
@@ -9,6 +9,7 @@ int main(){
     game_state = GAME;
     readMapFromFile("map.txt");
     printMap();
+    initPlayer();
 
     mainLoop();
 
diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/player.c b/travail_de_groupe/jeu_appren_par_renfo/src/player.c
index a013abfb1568f7c768d80ccb94b1b49829be846d..e958ca130e77f7fbda6db924caf1bc1157eeec3a 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/src/player.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/src/player.c
@@ -3,8 +3,8 @@
 player_t player;
 
 void initPlayer(){
-    player.x= 8*BLOCK_SIZE;
-    player.y= 8*BLOCK_SIZE;
+    player.x= 2*BLOCK_SIZE;
+    player.y= 2*BLOCK_SIZE;
     player.speed = 1;
     player.isMoving = 0;
     player.HPMax = 3;
diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/render.c b/travail_de_groupe/jeu_appren_par_renfo/src/render.c
index 5ec13d32ba89944c6b193276574e8aefe5039a26..0ff89b9f3deb46e62ba171a192d1d174c7dbec11 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/src/render.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/src/render.c
@@ -10,11 +10,33 @@ SDL_Rect rect;
 SDL_Rect sky;
 SDL_Rect ground;
 
-// ray casting variables
-float htexture;
-int r, mx, my, dof;
-double rx, ry, xo, yo, distT;
-double ra;
+int ** rays;
+int  raysListLength = 0;
+
+void initRays(){
+    int i;
+    rays = malloc(sizeof(int*) * NB_RAYS);
+    for (i = 0; i < NB_RAYS; i++){
+        rays[i] = malloc(sizeof(int) * 2);
+    }
+}
+
+void addRayToList(int x, int y){
+    if (raysListLength < NB_RAYS){
+        *rays[raysListLength] = x;
+        *(rays[raysListLength] + 1) = y;
+        raysListLength++;
+    }
+}
+
+void resetRayList(){
+    int i;
+    for (i = 0; i < NB_RAYS; i++){
+        *rays[i] = 0;
+        *(rays[i] + 1) = 0;
+    }
+    raysListLength = 0;
+}
 
 // end ray casting variables
 
@@ -59,6 +81,12 @@ void endSDL(){
 }
 
 void drawRays(int map[][MAP_WIDTH]){
+    // ray casting variables
+    float htexture;
+    int r, mx, my, dof;
+    double rx, ry, xo, yo, distT;
+    double ra;
+    resetRayList();
     ra = player.angle - DR * FOV_ANGLE/4;
     if (ra < 0) ra -= 2*pi;
     if (ra > 2*pi) ra -= 2*pi;
@@ -87,13 +115,12 @@ void drawRays(int map[][MAP_WIDTH]){
         while (dof < DOF){
             mx = (int)rx>>6;
             my = (int)ry>>6;
-            if (mx >= 0 && mx < MAP_WIDTH && my >= 0 && my < MAP_HEIGHT){
-                if (map[my][mx] == 1){
-                    hx = rx;
-                    hy = ry;
-                    disH = sqrt((rx-player.x)*(rx-player.x) + (ry-player.y)*(ry-player.y));
-                    dof = DOF;
-                }
+            if (mx >= 0 && mx < MAP_WIDTH && my >= 0 && my < MAP_HEIGHT && map[my][mx] == 1){
+                
+                hx = rx;
+                hy = ry;
+                disH = sqrt((rx-player.x)*(rx-player.x) + (ry-player.y)*(ry-player.y));
+                dof = DOF;
             }
             else {
                 rx += xo;
@@ -118,16 +145,19 @@ void drawRays(int map[][MAP_WIDTH]){
             xo = BLOCK_SIZE;
             yo = -xo*nTan;
         }
+        if (ra == pi || ra == 0){
+            ry = player.y;
+            rx = player.x;
+            dof = DOF;
+        }
         while (dof < DOF){
             mx = (int)rx>>6;
             my = (int)ry>>6;
-            if (mx >= 0 && mx < MAP_WIDTH && my >= 0 && my < MAP_HEIGHT){
-                if (map[my][mx] == 1){
-                    vx = rx;
-                    vy = ry;
-                    disV = sqrt((rx-player.x)*(rx-player.x) + (ry-player.y)*(ry-player.y));
-                    dof = DOF;
-                }
+            if (mx >= 0 && mx < MAP_WIDTH && my >= 0 && my < MAP_HEIGHT && map[my][mx] == 1){
+                vx = rx;
+                vy = ry;
+                disV = sqrt((rx-player.x)*(rx-player.x) + (ry-player.y)*(ry-player.y));
+                dof = DOF;
             }
             else {
                 rx += xo;
@@ -157,9 +187,9 @@ void drawRays(int map[][MAP_WIDTH]){
         float lineH = (screenDimension.h/2)/distT;
 
         rect.x = r;
-        rect.y = lineH;
+        rect.y = screenDimension.h/2 - lineH;
         rect.w = 1;
-        rect.h = lineH;
+        rect.h = (2 * screenDimension.w * lineH/200);
 
         if (disH < disV) {
             SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
@@ -168,6 +198,10 @@ void drawRays(int map[][MAP_WIDTH]){
             SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255);
         }
         SDL_RenderFillRect(renderer, &rect);
+
+        // draw the ray in the minimap
+        addRayToList(rx, ry);
+
     }
 }
 
@@ -184,18 +218,30 @@ void drawMap2D(int map[][MAP_WIDTH]){
                 SDL_RenderFillRect(renderer, &rect);
             }
             else {
-                SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
-                SDL_RenderFillRect(renderer, &rect);
+                if (i == player.x/BLOCK_SIZE && j == player.y/BLOCK_SIZE){
+                    SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
+                    SDL_RenderFillRect(renderer, &rect);
+                }
+                else {
+                    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
+                    SDL_RenderFillRect(renderer, &rect);
+                }
             }
             rect.x += CELL_SIZE;
         }
         rect.y += CELL_SIZE;
         rect.x = 0;
     }
+    SDL_SetRenderDrawColor(renderer, 255, 255, 0, 255);
+    for (i = 0; i < NB_RAYS; i++){
+        SDL_RenderDrawLine(renderer, player.x * CELL_SIZE / BLOCK_SIZE , player.y * CELL_SIZE / BLOCK_SIZE, rays[i][0] * CELL_SIZE / BLOCK_SIZE, rays[i][1] * CELL_SIZE / BLOCK_SIZE);
+    }
+    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
 }
 
 void drawGame(){
     SDL_RenderClear(renderer);
+    drawRays(map);
     drawMap2D(map);
     SDL_RenderPresent(renderer);
 }
@@ -204,6 +250,7 @@ void drawGame(){
 
 void mainLoop(){
     createWindow();
+    initRays();
 
     unsigned int a = SDL_GetTicks();
     unsigned int b = SDL_GetTicks();