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 5f55c79f7c6582236401ca59d93993076f54521b..27b27f7a92e77811cf5bb3bd9dbc87087c251a1a 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/src/player.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/src/player.c
@@ -40,7 +40,7 @@ void initPlayer(){
 
 int * generateLandingPoint(){
     int * landingPoint = malloc(sizeof(int) * 2);
-    int randomLength = rand() % (int)(MAP_WIDTH*BLOCK_SIZE - player.x);
+    int randomLength = rand() % (int)((MAP_WIDTH/2)*BLOCK_SIZE) + (MAP_WIDTH/2)*BLOCK_SIZE;
     int randomPointX = randomLength * cos(player.angle) + player.x;
     int randomPointY = randomLength * sin(player.angle) + player.y;
     landingPoint[0] = randomPointX/BLOCK_SIZE;
@@ -50,7 +50,7 @@ int * generateLandingPoint(){
 }
 
 int * allocLastHitPoint(){
-    int * lastHitPoint = malloc(sizeof(int) * 2);
+    int * lastHitPoint = (int *)malloc(sizeof(int) * 2);
     lastHitPoint[0] = 0;
     lastHitPoint[1] = 0;
     return lastHitPoint;
@@ -73,16 +73,16 @@ void hitBall(){
     if (sqrt(pow(player.x - ball.x, 2) + pow(player.y - ball.y, 2))/BLOCK_SIZE < HIT_RANGE){
         if (currAngle < angleMax && currAngle > angleMin){
             //printf("hit\n");
-            freeIntList(landingPoint);
-            freeIntList(lastHitPoint);
-            lastHitPoint = allocLastHitPoint();
-            landingPoint = generateLandingPoint();
             if (player.isHitting){
-                lastHitPoint[0] = player.x;
+                freeIntList(landingPoint);
+                freeIntList(lastHitPoint);
+                lastHitPoint = allocLastHitPoint();
+                landingPoint = generateLandingPoint();
+                lastHitPoint[0] = ball.x;
                 lastHitPoint[1] = player.h;
-                ball.x = player.x;
+                /*ball.x = player.x;
                 ball.y = player.y;
-                ball.z = player.h;
+                ball.z = player.h;*/
                 ball.angle = player.angle;
                 ball.speed = HIT_FORCE;
                 ball.isHit = 1;
@@ -100,9 +100,22 @@ void updateBall(){
     ball.x = ball.x + ball.speed * cos(ball.angle);
     ball.y = ball.y + ball.speed * sin(ball.angle);
     if (ball.isHit){
-        ball.z = lagrangeInterpolation(ball.x, lastHitPoint[0], lastHitPoint[1], 15 , 2*player.h, landingPoint[0], 0);
+        // landingPoint est déjà / BLOCK_SIZE de base
+        ball.z = lagrangeInterpolation(ball.x/BLOCK_SIZE, lastHitPoint[0]/BLOCK_SIZE, lastHitPoint[1]/BLOCK_SIZE, 15 , 2*player.h/BLOCK_SIZE, landingPoint[0], 0);
+        if(ball.z > 0){
+            printf("param. lagrange : xp=%f, xd=%d, yd=%d, xf=%d, yf=%d, xt=%d, yt=%d\n",
+                ball.x/BLOCK_SIZE,
+                lastHitPoint[0]/BLOCK_SIZE,
+                lastHitPoint[1]/BLOCK_SIZE,
+                15,
+                2*player.h/BLOCK_SIZE,
+                landingPoint[0],
+                0
+            );
+            printf("ballZ: %f\n", ball.z);
+        }
+        
     }
-    //printf("ball position: %f %f %f\n", ball.x/BLOCK_SIZE, ball.y/BLOCK_SIZE, ball.z);
 }
 
 
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 3953a8f602e8649ae9397c59c37114296fe0d9a3..d41e8de5543d1941dcb9d576eda3efb7c2aacf5e 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/src/render.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/src/render.c
@@ -451,7 +451,7 @@ void drawEnnemy(){
         if (angleSum > 2*pi) angleSum -= 2*pi;
         if (angleSum < 0) angleSum += 2*pi;
 
-        printf("sum: %f\n", angleSum * RD);
+        //printf("sum: %f\n", angleSum * RD);
 
         if (angleSum > 5*pi/3 && angleSum <= pi/3){
             destRect.x = 2 * destRect.w;
@@ -486,8 +486,8 @@ void drawBall(){
     float angleMax = player.angle + (FOV_ANGLE)/2 * DR;
 
 
-    printf("ball angle: %f player angle: %f\n", ballAngle * RD, player.angle * RD);
-    printf("limit angles: %f %f\n", angleMin, angleMax);
+    //printf("ball angle: %f player angle: %f\n", ballAngle * RD, player.angle * RD);
+    //printf("limit angles: %f %f\n", angleMin, angleMax);
     if (ballAngle >= angleMin && ballAngle <= angleMax){
         rect.x = screenDimension.w/2 + (screenDimension.w * tan(ballAngle - player.angle)) * sqrt(3) * 0.5;
         rect.w = (ballWidth * screenDimension.w) / (ballDistance/BLOCK_SIZE);
@@ -572,6 +572,46 @@ void drawFPS(){
     drawString(str, screenDimension.w - 50, 0, 50, 50, 255, 255, 255, 255);
 }
 
+void drawInfosPlayer(){
+    char str_x_player[10];
+    char str_y_player[10];
+    char str_z_player[10];
+    char str_playerX[20] = "playerX:";
+    char str_playerY[20] = "playerY:";
+    char str_playerZ[20] = "playerZ:";
+
+    sprintf(str_x_player, "%d", (int)player.x);
+    strcat(str_playerX, str_x_player);
+    sprintf(str_y_player, "%d", (int)player.y);
+    strcat(str_playerY, str_y_player);
+    sprintf(str_z_player, "%d", (int)player.z);
+    strcat(str_playerZ, str_z_player);
+
+    drawString(str_playerX, screenDimension.w - 120, 50, 100, 50, 255, 255, 255, 255);
+    drawString(str_playerY, screenDimension.w - 120, 100, 100, 50, 255, 255, 255, 255);
+    drawString(str_playerZ, screenDimension.w - 120, 150, 100, 50, 255, 255, 255, 255);
+}
+
+void drawInfosBall(){
+    char str_x_ball[10];
+    char str_y_ball[10];
+    char str_z_ball[10];
+    char str_ballX[20] = "ballX/BS:";
+    char str_ballY[20] = "ballY:";
+    char str_ballZ[20] = "ballZ:";
+
+    sprintf(str_x_ball, "%d", (int)ball.x/BLOCK_SIZE);
+    strcat(str_ballX, str_x_ball);
+    sprintf(str_y_ball, "%d", (int)ball.y);
+    strcat(str_ballY, str_y_ball);
+    sprintf(str_z_ball, "%d", (int)ball.z);
+    strcat(str_ballZ, str_z_ball);
+
+    drawString(str_ballX, screenDimension.w - 120, 200, 100, 50, 255, 255, 255, 255);
+    drawString(str_ballY, screenDimension.w - 120, 250, 100, 50, 255, 255, 255, 255);
+    drawString(str_ballZ, screenDimension.w - 120, 300, 100, 50, 255, 255, 255, 255);
+}
+
 void drawGame(){
     SDL_RenderClear(renderer);
     drawSkyAndGround();
@@ -582,6 +622,8 @@ void drawGame(){
     drawBall();
     drawMap2D(map);
     drawFPS();
+    drawInfosPlayer();
+    drawInfosBall();
     SDL_RenderPresent(renderer);
 }