diff --git a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/canon.c b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/canon.c
index d896d1c445c689d58dffd70e939c5533ee02e0ad..e0041d2e1ef82b6f779cade895bde4309c50fb2d 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/canon.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/canon.c
@@ -8,4 +8,28 @@ void initCanon(){
     canon.length = 20;
     canon.x = 100;
     canon.y = 20;
+    canon.zone = 1;
+}
+
+int getZone(int terrainX, int terrainY, int terrainW, int terrainH){
+    int z = -1;
+    int xCanonTopView = terrainX + canon.x;
+    int yCanonTopView = terrainY + canon.y;
+    //en haut à gauche => 1
+    if(canon.x >= 0 && canon.x<terrainW/2 && yCanonTopView>=0 && canon.y<terrainH/4){
+        z = 1;
+    }
+    //en haut à droite => 2
+    else if(xCanonTopView>=terrainX+terrainW/2 && xCanonTopView<=terrainX+terrainW && yCanonTopView>=terrainY && yCanonTopView<terrainX+terrainH/4){
+        z = 2;
+    }
+    //en bas à gauche => 3
+    else if(xCanonTopView >= terrainX && xCanonTopView<terrainX+terrainW/2 && yCanonTopView>=terrainY+terrainH/4 && yCanonTopView<=terrainH+terrainH/2){
+        z = 3;
+    }
+    //en bas à droite => 4
+    else{
+        z = 4;
+    }
+    return z;
 }
\ No newline at end of file
diff --git a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/canon.h b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/canon.h
index 5b292f9bde17de9be577e757e578810a00f432c4..1191da9803cc2c9b0aafa3686942e54265bede1a 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/canon.h
+++ b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/canon.h
@@ -7,10 +7,12 @@ typedef struct canon{
     int width;
     int height;
     int length;
+    int zone;
 } canon_t;
 
 extern canon_t canon;
 
 void initCanon();
+int getZone(int, int, int, int);
 
 #endif
\ No newline at end of file
diff --git a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/gest_event.c b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/gest_event.c
index 45f5d819d61d1be5ad85035847055a026cd37fe9..98c449f39feda6a738c608b2af8053b52a84f04c 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/gest_event.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/gest_event.c
@@ -32,10 +32,12 @@ void manageGame(){
 
                     case SDLK_e:
                         initPointDeChute();
+                        zone_chute = getZoneChute(terrain.x, terrain.y, terrain.w, terrain.h);
                         break;
 
                     case SDLK_r:
                         newCanon();
+                        zone_canon = getZone(terrain.x, terrain.y, terrain.w, terrain.h);
                         break;
                         
                     default:
diff --git a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/render.c b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/render.c
index ba6a252ee07ed8fa6b36887c753582e74560994a..3bbe9889ba8dd240dc6d3040753f1e023c732ae7 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/render.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/render.c
@@ -17,6 +17,9 @@ SDL_Rect point_de_chute;
 int point_x_rand;
 int point_y_rand;
 
+int zone_canon = -1;
+int zone_chute = -1;
+
 void createWindow(){
     if (SDL_Init(SDL_INIT_VIDEO) != 0){
         printf("Couldn't create window.");
@@ -67,6 +70,33 @@ void initPointDeChute(){
     point_y_rand = (int)rand()%(terrain.h/2);
 }
 
+
+int getZoneChute(int terrainX, int terrainY, int terrainW, int terrainH){
+    int z = -1;
+    // pdc = point de chute
+    int pdc_x = terrainX + point_x_rand;
+    int pdc_y = terrainY + terrainH/2 + point_y_rand;
+    //en haut à gauche => 1
+    if(point_x_rand>=0 && point_x_rand<terrainW/2 && pdc_y<terrainY+(3*terrainH)/4){
+        z = 1;
+    }
+    //en haut à droite => 2
+    /*else if(){
+        z = 2;
+    }
+    //en bas à gauche => 3
+    else if(point_x_rand>=0 && point_x_rand<terrainW/2 && ){
+        z = 3;
+    }
+    //en bas à droite => 4
+    */else{
+        z = -6;
+    }
+    printf("point_x_rand : %d, terrainW/2: %d\n", point_x_rand, terrainW/2);
+    printf("pdc_x : %d, pdc_y : %d, tX : %d, tY : %d\n", pdc_x, pdc_y, terrainX, terrainY);
+    return z;
+}
+
 void newCanon(){
     initTerrain();
     srand(time(NULL));
@@ -190,18 +220,23 @@ void drawInformations(){
     int texte_width = 200;
     int texte_height = 40;
     char str[20];
-    char zone_canon[20] = "zone canon : ";
-    int zone_ca = 4;
+    char str2[20];
+    char zoneChuteChaine[20] = "zone chute :";
+    char zoneCanonChaine[20] = "zone canon :";
     drawString("informations :", window_width-texte_width, texte_height*0, texte_width, texte_height, 255, 255, 255, 255);
-    drawString("e : new ball", window_width-texte_width, texte_height*1, texte_width, texte_height, 255, 255, 255, 255);
-    drawString("posBallX", window_width-texte_width, texte_height*2, texte_width, texte_height, 255, 255, 255, 255);
-    drawString("zone de chute : %d", window_width-texte_width, texte_height*3, texte_width, texte_height, 255, 255, 255, 255);
+    drawString("e : new point chute", window_width-texte_width, texte_height*1, texte_width, texte_height, 255, 255, 255, 255);
+    sprintf(str2, "%d", zone_chute);
+    strcat(zoneChuteChaine, str2);
+    drawString(zoneChuteChaine, window_width-texte_width, texte_height*2, texte_width, texte_height, 255, 255, 255, 255);
     drawString("r : new canon", window_width-texte_width, texte_height*4, texte_width, texte_height, 255, 255, 255, 255);
-    drawString("position canon (%d, %d)", window_width-texte_width, texte_height*5, texte_width, texte_height, 255, 255, 255, 255);
+    sprintf(str, "%d", zone_canon);
+    strcat(zoneCanonChaine, str);
+    drawString(zoneCanonChaine, window_width-texte_width, texte_height*5, texte_width, texte_height, 255, 255, 255, 255);
+}
 
-    sprintf(str, "%d", zone_ca);
-    strcat(zone_canon, str);
-    drawString(zone_canon, window_width-texte_width, texte_height*6, texte_width, texte_height, 255, 255, 255, 255);
+void drawTrajectoireTopView(){
+    SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255);
+    SDL_RenderDrawLine(renderer, terrain.x+canon.x, terrain.y+canon.y, point_de_chute.x, point_de_chute.y);
 }
 
 void drawBall(){
@@ -238,8 +273,7 @@ void drawBall(){
 void mainLoop(){
     createWindow();
     initCanon();
-    initPointDeChute(terrain);
-    //trouveZoneDeChute();
+    initPointDeChute();
 
     pthread_t eventThread;
     if (pthread_create(&eventThread, NULL, eventLoop, NULL) != 0){
@@ -255,12 +289,16 @@ void mainLoop(){
         drawTerrainTopView();
         drawCanonTopView();
         drawPointDeChuteTopView();
+        drawTrajectoireTopView();
+        initTerrain();
+        zone_canon = getZone(terrain.x, terrain.y, terrain.w, terrain.h);
+        zone_chute = getZoneChute(terrain.x, terrain.y, terrain.w, terrain.h);
 
         //side view
         drawTerrainSideView();
         drawCanonSideView();
         drawPointDeChuteSideView();
-
+    
         //
         drawInformations();
        
diff --git a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/render.h b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/render.h
index 666151651a5a691f60c8545fd4e2f27eaf9976ba..88255aa931aba2b24c0a96cabc0676c9b58ae4e1 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/render.h
+++ b/travail_de_groupe/jeu_appren_par_renfo/antoi_render_2d/source/render.h
@@ -5,12 +5,18 @@
 #include "ball.h"
 #include "canon.h"
 
+extern int zone_canon;
+extern int zone_chute;
+extern SDL_Rect terrain;
+
 void createWindow();
 void endSDL();
 void drawString(char *, int, int, int, int, int, int, int, int);
 void drawTerrainTopView();
 void initPointDeChute();
 void newCanon();
+int getZoneChute(int, int, int, int);
+void initTerrain();
 //tofinish
 void mainLoop();