diff --git a/code/display.c b/code/display.c
index a8e24792e8ca1696d21867da7b1ceb8f9928882f..457067fe09a850b181821ceaca37c5861595793e 100644
--- a/code/display.c
+++ b/code/display.c
@@ -192,18 +192,23 @@ void init_enemies_ressources(SDL_Renderer *renderer, resources_t *resources, wor
     }
 }
 
-void clear_enemies_ressources()
+void clear_enemies_ressources(resources_t *resources)
 {
-
+    free(resources->enemies);
 }
 
-void destroy_textures(resources_t *resources)
+void destroy_textures(resources_t *resources, world_t *world)
 {
     SDL_DestroyTexture(resources->background);
     
     SDL_DestroyTexture(resources->soldier_idle_left);
     SDL_DestroyTexture(resources->soldier_aim_up_left);
     SDL_DestroyTexture(resources->soldier_crouch_left);
+
+    SDL_DestroyTexture(resources->soldier_idle_right);
+    SDL_DestroyTexture(resources->soldier_aim_up_right);
+    SDL_DestroyTexture(resources->soldier_crouch_right);
+
     for(int i = 0; i < 10; i++)
     {
         SDL_DestroyTexture(resources->soldier_run_left[i]);
@@ -212,9 +217,10 @@ void destroy_textures(resources_t *resources)
         SDL_DestroyTexture(resources->soldier_jump_right[i]);
     }
     
-    SDL_DestroyTexture(resources->soldier_idle_right);
-    SDL_DestroyTexture(resources->soldier_aim_up_right);
-    SDL_DestroyTexture(resources->soldier_crouch_right);
+    for (int i = 0; i < world->rounds.number_enemies; ++i)
+    {
+        SDL_DestroyTexture(resources->enemies[i]);
+    }
     
     SDL_DestroyTexture(resources->bullet);
     SDL_DestroyTexture(resources->enemy);
diff --git a/code/display.h b/code/display.h
index a4b5c98b2ccf203295721e00ae9d386d731e1889..8a23c758eeedecfc935bf050c16629f1d0618a77 100644
--- a/code/display.h
+++ b/code/display.h
@@ -46,9 +46,9 @@ 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);
 
-void clear_enemies_ressources();
+void clear_enemies_ressources(resources_t *resources);
 
-void destroy_textures(resources_t *resources);
+void destroy_textures(resources_t *resources, world_t *world);
 
 //void rotate_right(SDL_Renderer *renderer, world_t *world,resources_t *resources);
 
diff --git a/code/enemy.c b/code/enemy.c
index 4851fce9b562fa695c97d98a6599d739627a66bd..030e7735f66cf395c87fc645fd39d6f3a4a0d069 100644
--- a/code/enemy.c
+++ b/code/enemy.c
@@ -22,7 +22,7 @@ void init_enemy(enemy_t *enemy)
     }else{
       init_enemyType4(enemy);
     }
-    enemy->is_moving = 1;  
+    enemy->is_moving = 0;  
 }
 
 void init_enemyType1(enemy_t *enemy)
diff --git a/code/main.c b/code/main.c
index b0fdccf248bf052af93ccf12d5e1aa836489708d..fe7a801e18b5b9669f78517bcdf10084179d063e 100644
--- a/code/main.c
+++ b/code/main.c
@@ -88,7 +88,7 @@ int main(void)
         SDL_RenderPresent(renderer);
     }
     // Quitter SDL
-    destroy_textures(&resources);
+    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 03eacdd37de25b08889a86ce329467b6471e85b5..745cc90c56988aa48adf7bc3d33066fdf06e99da 100644
--- a/code/round_management.c
+++ b/code/round_management.c
@@ -14,9 +14,16 @@ void save_game()
 }*/
 
 
-int isRoundEnded()
+int isRoundEnded(round_t *round)
 {
-	return 0;
+	for (int i = 0; i < round->number_enemies; ++i)
+	{
+		if(round->enemies[i].sprite.is_visible == 1)
+		{
+			return 0;
+		}
+	}
+	return 1;
 }
 
 
@@ -26,16 +33,27 @@ void initFirstRound(round_t *round, int nbEnemies, int incrementation)
 	round->round_number = 0;
 	round->number_enemies = nbEnemies;
 	round->incrementation = incrementation;
+	round->counter = 0;
+	round->index_to_spawn = 0;
 	createEnemies(round);
 }
 
 //Actualiser qui se déplace
 void updateRound(round_t *round)
 {
-
+	if(round->counter == 0)
+	{
+		round->enemies[round->index_to_spawn].is_moving = 1;
+		round->index_to_spawn++;
+	}
+	round->counter++;
+	if(round->counter == 500)
+	{
+		round->counter = 0;
+	}
 }
 
-void nextRound(round_t *roun)
+void nextRound(round_t *round)
 {
 
 }
@@ -50,7 +68,7 @@ void createEnemies(round_t *round)
 	}
 }
 
-void clearEnemies()
+void clearEnemies(round_t *round)
 {
-
+	free(round->enemies);
 }
\ No newline at end of file
diff --git a/code/round_management.h b/code/round_management.h
index e2b88c82b5554b7b0c014354b23282554da66e5e..f764ef84087ebcef88a6f40111ae1d5aef6f47e8 100644
--- a/code/round_management.h
+++ b/code/round_management.h
@@ -9,6 +9,8 @@ struct round_s
 	int incrementation; //Nombre d'ennemis en + à chaque round
 	int number_enemies; //Nombre d'ennemis actuel dans la manche
 	enemy_t *enemies;	//Tableau d'ennemis
+	int counter;		//Compteur entre chaque apparition des ennemis
+	int index_to_spawn;	//Index pour savoir quel ennemi doit apparaitre
 };
 /**
  * \brief Type qui correspond au round
@@ -16,7 +18,7 @@ struct round_s
 typedef struct round_s round_t;
 
 
-int isRoundEnded();
+int isRoundEnded(round_t *round);
 
 void initFirstRound(round_t *round, int nbEnemies, int incrementation);
 
@@ -26,6 +28,6 @@ void nextRound(round_t *round);
 
 void createEnemies(round_t *round);
 
-void clearEnemies();
+void clearEnemies(round_t *round);
 
 #endif
\ No newline at end of file
diff --git a/code/world_data.c b/code/world_data.c
index a25a0faf3443e04233ffbaf0a8c8a43f3e5fbfae..b74126a7e734cd6b46ea4a00a1088cc52cf64b70 100644
--- a/code/world_data.c
+++ b/code/world_data.c
@@ -91,23 +91,27 @@ void refresh_data(world_t *world)
 
 
     //Si la manche n'est pas finie
-    if(isRoundEnded() == 0)
+    if(isRoundEnded(&world->rounds) == 0)
     {
       updateRound(&world->rounds);
       for (int i = 0; i < world->rounds.number_enemies ; i++)
       {
-        enemy_walk(&world->rounds.enemies[i],&world->soldier);
-        world->rounds.enemies[i].DestEnemy.x = world->rounds.enemies[i].sprite.x;
-        world->rounds.enemies[i].DestEnemy.y = world->rounds.enemies[i].sprite.y;
-        //Si l'ennemi touche le soldat
-        //enemy_touch_soldier(&world->rounds.enemies[i],&world->soldier);
-        enemy_dead(&world->rounds.enemies[i],&world->soldier);
+        if(world->rounds.enemies[i].is_moving == 1)
+        {
+          enemy_walk(&world->rounds.enemies[i],&world->soldier);
+          world->rounds.enemies[i].DestEnemy.x = world->rounds.enemies[i].sprite.x;
+          world->rounds.enemies[i].DestEnemy.y = world->rounds.enemies[i].sprite.y;
+          //Si l'ennemi touche le soldat
+          //enemy_touch_soldier(&world->rounds.enemies[i],&world->soldier);
+          enemy_dead(&world->rounds.enemies[i],&world->soldier);
+        }
       }
     }
     //Sinon si la manche est finie, manche suivante
     else
     {
       nextRound(&world->rounds);
+      //printf("gg ta gagné");
       //Charger le bon nombre de texture
     }
 
@@ -170,6 +174,7 @@ void handle_events(SDL_Event *event,world_t *world)
       //On indique la fin du jeu
       //Libère la mémoire du tableau DestBullet pour l'affichage
       free(world->soldier.DestBullet);
+      clearEnemies(&world->rounds);
       world->gameover = 1;
     }