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 bd35d299cd42f7033c93d79c3a548ae53dc68bdb..43710c0a0d8b5903bdf9333352587dddccd5733c 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/src/main.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/src/main.c
@@ -6,14 +6,14 @@ int game_state;
 
 int main(){ 
     float ***** Q = allocateAndInitiateQ();
-    int i = 10000;
+    int i= 10;
     
     srand ( time(NULL));
     while (i>0){
-    traningAgent(10000000, 40, Q);
+    traningAgent(10000,5000, Q);
     i--;} 
     
-     writeQ(Q);
+    writeQ(Q);
     // running = 1;
     // game_state = GAME;
     // readMapFromFile("map.txt");
diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.c b/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.c
index d5a9aa7a73c097e9a7e280cf6a0c263129d4f847..3b5084014b908dca1e3fd7d054a62b589ead47c6 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.c
+++ b/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.c
@@ -128,18 +128,18 @@ int argmax(float * arr){
 }
 
 int convertIntoZone(int xAgent,int yAgent){
-    int zone; 
+    int zone=0; 
     xAgent=xAgent/BLOCK_SIZE;
     yAgent=yAgent/BLOCK_SIZE;
-    if(xAgent<23 && yAgent<=4){zone=0;} 
-    else if(xAgent<31 && yAgent<=4){zone=1;} 
-    else if(xAgent<23 && yAgent<9){zone=2;}
-    else if(xAgent< 31&& yAgent<9){zone=3;}
+    if(xAgent> 15 && xAgent<23 && yAgent<=4){zone=0;} 
+    else if(xAgent>22 && xAgent<31 && yAgent<=4){zone=1;} 
+    else if(xAgent> 15 && xAgent<23 && yAgent<=9){zone=2;}
+    else if(xAgent> 22 && xAgent<= 31&& yAgent<=9){zone=3;}
      
     return zone ; 
 }
 int convertIntoZoneCanon(int xCanon,int yCanon){
-    int zone; 
+    int zone=0; 
     xCanon=xCanon/BLOCK_SIZE;
     yCanon=yCanon/BLOCK_SIZE;
     if(xCanon<9 && yCanon<=4){zone=0;} 
@@ -174,9 +174,9 @@ int converterIntoAngleH(float angleH){
 
 int takeAction(int xAgent, int yAgent, float ***** Q, int canonZone, int angleHZone, int angleFZone, float eps){
     int action;
-    int proba = rand() % 100;
+    int proba = rand() % 10000;
     int receiverZone=0;
-    if (proba < eps * 100){
+    if (proba < eps * 10000){
         if (xAgent/BLOCK_SIZE > (MAP_WIDTH-1)/2+1 && xAgent/BLOCK_SIZE < MAP_WIDTH- 2 && yAgent/BLOCK_SIZE > 1 && yAgent/BLOCK_SIZE < MAP_HEIGHT - 2){
             action = rand() % 5;// OK cas au centre
         }
@@ -321,7 +321,7 @@ void freeStack(stack_t *stack)
     {
         free(stack->base); //on libère le tableau dynamique
         free(stack);    //on libère la tête de la stack
-        printf("Pile libérée\n");
+        //printf("Pile libérée\n");
     }
     else
     {
@@ -349,7 +349,7 @@ void traningAgent ( int numberRun, int numberStep, float *****Q) {// pour avoir
     line_t line; 
     float greedy=1; 
     int maxAction;
-    stack= initStack(1000); 
+    stack= initStack(6000); 
     
     while (numberRun>0){
         agent=initAgent(); 
@@ -362,7 +362,7 @@ void traningAgent ( int numberRun, int numberStep, float *****Q) {// pour avoir
         dropZone=convertIntoZone(dropPoint.x,dropPoint.y); 
         canonZone= convertIntoZoneCanon(canon.x,canon.y); 
         reward=0; 
-        //printf("%d %d %d %d \n",dropZone, canonZone,zoneAngleH,zoneAngleF);
+        printf("%d %d %d %d \n",dropZone, canonZone,zoneAngleH,zoneAngleF);
 
         for (i=0; i<numberStep-1;i++){ 
             action = takeAction(agent->x,agent->y,Q,canonZone,zoneAngleH,zoneAngleF,greedy); 
@@ -372,28 +372,30 @@ void traningAgent ( int numberRun, int numberStep, float *****Q) {// pour avoir
             line.angleHZone= zoneAngleH; 
             line.angleFZone= zoneAngleF; 
             line.action= action;
-            line.reward=0; 
+            line.reward= reward ; 
             actionStack(stack,line);
             moveAgent(agent, action);
 
         }
         action = takeAction(agent->x, agent->y,Q,canonZone,zoneAngleH,zoneAngleF,greedy); 
         agentZone = convertIntoZone(agent->x, agent->y); 
+        if (agentZone==dropZone){ 
+                   reward=1; 
+                }
+                else{reward= 0;}
         line.receiverZone=agentZone; 
         line.shooterZone =canonZone; 
         line.angleHZone= zoneAngleH; 
         line.angleFZone= zoneAngleF; 
         line.action= action;
-        
-        if (agentZone==dropZone){ 
-                    line.reward=1; 
-                }
-                else{line.reward= 0;}
-        actionStack(stack,line);
+        line.reward = reward; 
+       // actionStack(stack,line);
         moveAgent(agent, action);
+        
+        
 
         Q[line.receiverZone][line.shooterZone][line.angleHZone][line.angleFZone][line.action] +=  
-                    + LEARN_RATE* ( line.reward - Q[line.receiverZone][line.shooterZone][line.angleHZone][line.angleFZone][line.action] );
+                    + LEARN_RATE* ( reward - Q[line.receiverZone][line.shooterZone][line.angleHZone][line.angleFZone][line.action] );
        
         while (!emptyStack(stack)){
             maxAction= argmax(Q[line.receiverZone][line.shooterZone][line.angleHZone][line.angleFZone]);
@@ -404,10 +406,10 @@ void traningAgent ( int numberRun, int numberStep, float *****Q) {// pour avoir
                     + LEARN_RATE* ( reward +  DISCOUNT*Q[line.receiverZone][line.shooterZone][line.angleHZone][line.angleFZone][maxAction]
                     - Q[line.receiverZone][line.shooterZone][line.angleHZone][line.angleFZone][line.action] );
         }  
-        //printf("is empty : %d\n ", emptyStack(stack));
         numberRun--; 
         greedy=greedy-1/((float)numberRun);
 
         if ( numberRun%1000000==1){printf (" %d \n  ", numberRun);} 
     } 
+    freeStack(stack);
 } 
\ No newline at end of file
diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.h b/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.h
index 5714908ce41888d61cf0fb6a280683bc3df6f8ff..60fe308715821fa9a24e68b723829f1d0e5b9c93 100644
--- a/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.h
+++ b/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.h
@@ -11,7 +11,7 @@
 #define M_PI 3.14159265358979323846
 
 #define LEARN_RATE 0.8
-#define DISCOUNT 0.5
+#define DISCOUNT 0.2