diff --git a/code/display.c b/code/display.c
index e54a5111266011101c88590d0a0fa2bb184344e4..4bc00d064fb5b012832f4229f8db6d502579827a 100644
--- a/code/display.c
+++ b/code/display.c
@@ -90,7 +90,10 @@ void refresh_graphics(SDL_Renderer *renderer, world_t *world,resources_t *resour
     //Balles du joueur
     for(int i = 0; i < NB_BULLET; i++)
     {
-        SDL_RenderCopy(renderer, resources->bullet, NULL, &world->soldier.DestBullet[i]);
+        if(world->soldier.charger[i].sprite.is_visible == 1)
+        {
+            SDL_RenderCopy(renderer, resources->bullet, NULL, &world->soldier.DestBullet[i]);
+        }
     }
 
     //Les ennemis
@@ -109,6 +112,10 @@ void refresh_graphics(SDL_Renderer *renderer, world_t *world,resources_t *resour
         load_texture_powerUp(resources, renderer, world);
     }
 
+    if(world->gameover == 1)
+    {
+        destroy_textures(resources,world);
+    }
     
 }
 
@@ -192,7 +199,7 @@ void init_ressources(SDL_Renderer *renderer, resources_t *resources, world_t *wo
 
 void init_enemies_ressources(SDL_Renderer *renderer, resources_t *resources, world_t *world)
 {
-    resources->enemies = (SDL_Texture**) malloc(sizeof(SDL_Texture*)*world->rounds.number_enemies);
+    resources->enemies = (SDL_Texture**) calloc(world->rounds.number_enemies,sizeof(SDL_Texture*));
     for (int i = 0; i < world->rounds.number_enemies; i++)
     {
         resources->enemies[i] = charger_image_transparente("../resources/Player/Right/IdleRight.bmp", renderer, 255,0,255);
@@ -201,19 +208,23 @@ void init_enemies_ressources(SDL_Renderer *renderer, resources_t *resources, wor
 
 void realloc_enemies_ressources(SDL_Renderer *renderer, resources_t *resources, world_t *world)
 {
-    resources->enemies = (SDL_Texture**) realloc(resources->enemies,sizeof(SDL_Texture*)*world->rounds.number_enemies);
+    SDL_Texture* *tab = (SDL_Texture**) calloc(world->rounds.number_enemies,sizeof(SDL_Texture*));
+    free(resources->enemies);
+    //resources->enemies = NULL;
+    resources->enemies = tab;
+    //resources->enemies = (SDL_Texture**) realloc(resources->enemies,sizeof(SDL_Texture*)*world->rounds.number_enemies);
+    
     for (int i = 0; i < world->rounds.number_enemies; i++)
     {
         resources->enemies[i] = charger_image_transparente("../resources/Player/Right/IdleRight.bmp", renderer, 255,0,255);
     }
 }
 
-/*void clear_enemies_ressources(resources_t *resources,int nbEnemies)
+void clear_enemies_ressources(resources_t *resources,int nbEnemies)
 {
-    
     free(resources->enemies);
     resources->enemies = NULL;
-}*/
+}
 
 void destroy_textures(resources_t *resources, world_t *world)
 {
@@ -238,8 +249,7 @@ void destroy_textures(resources_t *resources, world_t *world)
     {
         SDL_DestroyTexture(resources->enemies[i]);
     }
-    free(resources->enemies);
-    //clear_enemies_ressources(resources,world->rounds.number_enemies);
+    clear_enemies_ressources(resources,world->rounds.number_enemies);
 
     SDL_DestroyTexture(resources->bullet);
     SDL_DestroyTexture(resources->enemy);
diff --git a/code/main.c b/code/main.c
index 6e9302114fa45e1eb8133912302120745fde8d3f..f8e55438dc665634d8500c32d990baf158a2c17b 100644
--- a/code/main.c
+++ b/code/main.c
@@ -67,19 +67,21 @@ int main(void)
         }
         t1 = t2;
         
-        //Actualise l'image
-        refresh_graphics(renderer, &world, &resources);
+        
 
         //Evenements clavier
         handle_events(&event,&world);
         
         //Actualise les donnees du monde
         refresh_data(&world);
+
+        //Actualise l'image
+        refresh_graphics(renderer, &world, &resources);
         
         SDL_RenderPresent(renderer);
     }
     // Quitter SDL
-    destroy_textures(&resources,&world);
+    //destroy_textures(&resources,&world);
     SDL_DestroyRenderer(renderer);
     SDL_DestroyWindow(window);
     SDL_Quit();
diff --git a/code/round_management.c b/code/round_management.c
index b760b447f6fff6691514b355c491bac1919dbbdb..0a6b204ad03e1c6b669a9668f31d3e333bc8c007 100644
--- a/code/round_management.c
+++ b/code/round_management.c
@@ -24,13 +24,11 @@ void initFirstRound(round_t *round, int nbEnemies, int incrementation)
 	round->index_to_spawn = 0;
 	round->is_new_round = 0;
 	//round->gameFinished = 0;
-
-	round->enemies = (enemy_t*) malloc(sizeof(enemy_t)*round->number_enemies);
+	round->enemies = (enemy_t*) calloc(round->number_enemies,sizeof(enemy_t));
 	for (int i = 0; i < round->number_enemies; i++)
 	{
 		init_enemy(&round->enemies[i]);
 	}
-
 	printf("Ennemis : %d Incrementation : %d\n",round->number_enemies,round->incrementation);
 }
 
@@ -63,6 +61,7 @@ void nextRound(round_t *round)
 		printf("avant %f i : %d\n",round->enemies[i].sprite.x,i);
 	}*/
 
+	//free(round->enemies);
 	createEnemies(round);
 	/*for (int i = 0; i < round->number_enemies; i++)
 	{
@@ -73,7 +72,14 @@ void nextRound(round_t *round)
 //Créer nbEnemies
 void createEnemies(round_t *round)
 {
-	round->enemies = (enemy_t*) realloc(round->enemies,sizeof(enemy_t)*round->number_enemies);
+	//round->enemies = (enemy_t*) realloc(round->enemies,sizeof(enemy_t)*round->number_enemies);
+	
+	enemy_t *tab = (enemy_t*) calloc(round->number_enemies,sizeof(enemy_t));
+	free(round->enemies);
+	//round->enemies = NULL;
+	round->enemies = tab;
+	//free(tab);
+
 	for (int i = 0; i < round->number_enemies; i++)
 	{
 		init_enemy(&round->enemies[i]);
diff --git a/code/world_data.c b/code/world_data.c
index 0fe36dbe458d0692bb64b1c1669d8e994b744431..6705436ec2c70cd4202ee9c102e069f62c3bcef0 100644
--- a/code/world_data.c
+++ b/code/world_data.c
@@ -107,6 +107,7 @@ void refresh_data(world_t *world)
   //Sinon si la manche est finie, manche suivante
   else
   {
+    //free(world->rounds.enemies);
     nextRound(&world->rounds);
     //printf("gg ta gagné");
     //Charger le bon nombre de texture
@@ -209,6 +210,7 @@ void handle_events(SDL_Event *event,world_t *world)
       //Libère le tableau d'ennemis
       //clearEnemies(&world->rounds);
       free(world->rounds.enemies);
+      //world->rounds.enemies = NULL;
       world->gameover = 1;
     }
    
diff --git a/data/save.txt b/data/save.txt
index 0059eafd4278182832e8f16b46287f428337bcaa..3c6a683be15023bdb82f108afb921d31f9ba397a 100644
--- a/data/save.txt
+++ b/data/save.txt
@@ -1,8 +1,8 @@
 /Vie du joueur au début
 10
 /Nombre d'ennemis au début
-13
+22
 /Nombre d'ennemis en plus à chaque manche
-1
+3
 /Nombre de balles
 30