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 1359766cd2c03eabfeeed16609b650e52e24d589..dea8b38010caa8368c5dbc14849201ecced7b59d 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/src/render.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/src/render.c
@@ -80,11 +80,38 @@ void endSDL(){
     SDL_Quit();
 }
 
+void drawRayColumn(float ra, float distT, int r, int isTransparent, int direction){
+    float ca = player.angle - ra;
+    if (ca < 0) ca += 2*pi;
+    if (ca > 2*pi) ca -= 2*pi;
+    distT = distT * cos(ca);
+
+    float lineH = (screenDimension.h/2)/distT;
+    rect.x = r;
+    rect.y = (screenDimension.h/2 + player.viewAngle) - lineH;
+    rect.w = 1;
+    rect.h = (2 * screenDimension.w * lineH/20);
+
+    if (isTransparent){
+        rect.h *= 0.75;
+        rect.y -= rect.h/3;
+    }
+    if (direction){
+        SDL_SetRenderDrawColor(renderer, 255 * (1 - isTransparent), 255, 0, 255 * (1 - isTransparent));
+    }
+    else {
+        SDL_SetRenderDrawColor(renderer, 0, 255, 255, 255 * (1 - isTransparent));
+    }
+    SDL_RenderFillRect(renderer, &rect);
+    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
+}
+
+
 void drawRays(int map[][MAP_WIDTH]){
     // ray casting variables
     float htexture;
     int r, mx, my, dof;
-    double rx, ry, xo, yo, distT;
+    double rx, ry, rx2, ry2,  xo, yo, distT, distT2;
     double ra;
     mx = 0;
     my = 0;
@@ -194,23 +221,49 @@ void drawRays(int map[][MAP_WIDTH]){
                 dof++;
             }
         }
+
+        int direction, direction2;
         
         if (foundTransparentWallV){
             if (disH < disV2){
                 rx = hx2;
                 ry = hy2;
                 distT = disH2;
-                SDL_SetRenderDrawColor(renderer, 255, 255, 0, 255);
+                direction = 0;
             }
             else {
                 rx = vx2;
                 ry = vy2;
                 distT = disV2;
-                SDL_SetRenderDrawColor(renderer, 255, 255, 0, 255);
+                direction = 1;
             }
             if (foundSolidWallV){
-                printf("found solid wall\n");
-                
+                if (disH < disV){
+                    rx2 = hx;
+                    ry2 = hy;
+                    distT2 = disH;
+                    direction2 = 0;
+                }
+                else {
+                    rx2 = vx;
+                    ry2 = vy;
+                    distT2 = disV;
+                    direction2 = 1;
+                }
+            }
+            if (foundSolidWallH){
+                if (disH < disV){
+                    rx2 = hx;
+                    ry2 = hy;
+                    distT2 = disH;
+                    direction2 = 0;
+                }
+                else {
+                    rx2 = vx;
+                    ry2 = vy;
+                    distT2 = disV;
+                    direction2 = 1;
+                }
             }
         }
 
@@ -219,13 +272,13 @@ void drawRays(int map[][MAP_WIDTH]){
                 rx = hx;
                 ry = hy;
                 distT = disH;
-                SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
+                direction = 0;
             }
             else {
                 rx = vx;
                 ry = vy;
                 distT = disV;
-                SDL_SetRenderDrawColor(renderer, 0, 255, 255, 255);
+                direction = 1;
             }
         }
 
@@ -234,27 +287,16 @@ void drawRays(int map[][MAP_WIDTH]){
         if (ra > 2*pi) ra -= 2*pi;
         if (ra < 0) ra += 2*pi;
 
-        // draw column
-        float ca = player.angle - ra;
-        if (ca < 0) ca += 2*pi;
-        if (ca > 2*pi) ca -= 2*pi;
-        distT = distT * cos(ca);
-        float lineH = (screenDimension.h/2)/distT;
-
-
-        rect.x = r;
-        rect.y = (screenDimension.h/2 + player.viewAngle) - lineH;
-        rect.w = 1;
-        rect.h = (2 * screenDimension.w * lineH/20);
-
+        // draw ray
+        drawRayColumn(ra, distT, r, foundTransparentWallV, direction);
         if (foundTransparentWallV){
-            rect.h *= 1.75;
-            rect.y -= rect.h/3;
+            if (foundSolidWallV){
+                drawRayColumn(ra, distT2, r, 0, direction2);
+            }
+            else {
+                drawRayColumn(ra, distT2, r, 0, direction);
+            }
         }
-
-        SDL_RenderFillRect(renderer, &rect);
-        SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
- 
         // draw the ray in the minimap
         addRayToList(rx, ry);