From 9d0d86c6ebe5cb2ffb74a923e2743ecda5e076dc Mon Sep 17 00:00:00 2001
From: suck5u <suck5u@etu.univ-lorraine.fr>
Date: Fri, 1 Jan 2021 16:46:54 +0100
Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20des=20probl=C3=A8mes=20m?=
 =?UTF-8?q?=C3=A9moires=20(il=20y=20en=20a=20toujours)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 code/display.c          |  18 ++--
 code/enemy.c            |   4 +-
 code/round_management.c |  13 +--
 code/round_management.h |   2 +-
 code/world_data.c       | 183 ++++++++++++++++++++--------------------
 code/world_data.h       |   1 +
 data/save.txt           |   2 +-
 7 files changed, 113 insertions(+), 110 deletions(-)

diff --git a/code/display.c b/code/display.c
index 9a500a1..e54a511 100644
--- a/code/display.c
+++ b/code/display.c
@@ -208,15 +208,12 @@ void realloc_enemies_ressources(SDL_Renderer *renderer, resources_t *resources,
     }
 }
 
-void clear_enemies_ressources(resources_t *resources,int nbEnemies)
+/*void clear_enemies_ressources(resources_t *resources,int nbEnemies)
 {
-    for (int i = 0; i < nbEnemies; i++)
-    {
-        SDL_DestroyTexture(resources->enemies[i]);
-    }
+    
     free(resources->enemies);
     resources->enemies = NULL;
-}
+}*/
 
 void destroy_textures(resources_t *resources, world_t *world)
 {
@@ -237,9 +234,12 @@ void destroy_textures(resources_t *resources, world_t *world)
         SDL_DestroyTexture(resources->soldier_jump_left[i]);
         SDL_DestroyTexture(resources->soldier_jump_right[i]);
     }
-    
-    printf("nbenemis %d\n",world->rounds.number_enemies);
-    clear_enemies_ressources(resources,world->rounds.number_enemies);
+    for (int i = 0; i < world->rounds.number_enemies; i++)
+    {
+        SDL_DestroyTexture(resources->enemies[i]);
+    }
+    free(resources->enemies);
+    //clear_enemies_ressources(resources,world->rounds.number_enemies);
 
     SDL_DestroyTexture(resources->bullet);
     SDL_DestroyTexture(resources->enemy);
diff --git a/code/enemy.c b/code/enemy.c
index 8961cdc..c7f321a 100644
--- a/code/enemy.c
+++ b/code/enemy.c
@@ -46,9 +46,9 @@ void init_enemyType2(enemy_t *enemy)
     int random = rand()%2+0;
     if (random == 1)
     {
-      init_sprite(&enemy->sprite, SCREEN_WIDTH+75, SCREEN_HEIGHT-ENEMY_HEIGHT*2-20, ENEMY_WIDTH, ENEMY_HEIGHT, ENEMY_T2_SPEED, 10);
+      init_sprite(&enemy->sprite, SCREEN_WIDTH+75, SCREEN_HEIGHT-ENEMY_HEIGHT*2-20, ENEMY_WIDTH, ENEMY_HEIGHT, ENEMY_T2_SPEED, 2);
     }else{
-      init_sprite(&enemy->sprite, -75, SCREEN_HEIGHT-ENEMY_HEIGHT*2-20, ENEMY_WIDTH, ENEMY_HEIGHT,ENEMY_T2_SPEED, 5);
+      init_sprite(&enemy->sprite, -75, SCREEN_HEIGHT-ENEMY_HEIGHT*2-20, ENEMY_WIDTH, ENEMY_HEIGHT,ENEMY_T2_SPEED, 2);
     }   
     enemy->type = 2;
     enemy->DestEnemy.x = enemy->sprite.x;
diff --git a/code/round_management.c b/code/round_management.c
index d8eb24a..b760b44 100644
--- a/code/round_management.c
+++ b/code/round_management.c
@@ -23,6 +23,7 @@ void initFirstRound(round_t *round, int nbEnemies, int incrementation)
 	round->counter = 0;
 	round->index_to_spawn = 0;
 	round->is_new_round = 0;
+	//round->gameFinished = 0;
 
 	round->enemies = (enemy_t*) malloc(sizeof(enemy_t)*round->number_enemies);
 	for (int i = 0; i < round->number_enemies; i++)
@@ -57,16 +58,16 @@ void nextRound(round_t *round)
 	round->counter = 0;
 	round->is_new_round = 1;
 	printf("nb enemies %d\n",round->number_enemies);
-	for (int i = 0; i < round->number_enemies; i++)
+	/*for (int i = 0; i < round->number_enemies*4; i++)
 	{
 		printf("avant %f i : %d\n",round->enemies[i].sprite.x,i);
-	}
+	}*/
 
 	createEnemies(round);
-	for (int i = 0; i < round->number_enemies; i++)
+	/*for (int i = 0; i < round->number_enemies; i++)
 	{
 		printf("apres %f i : %d\n",round->enemies[i].sprite.x,i);
-	}
+	}*/
 }
 
 //Créer nbEnemies
@@ -79,8 +80,8 @@ void createEnemies(round_t *round)
 	}
 }
 
-void clearEnemies(round_t *round)
+/*void clearEnemies(round_t *round)
 {
 	free(round->enemies);
 	round->enemies = NULL;
-}
\ No newline at end of file
+}*/
\ No newline at end of file
diff --git a/code/round_management.h b/code/round_management.h
index ae748b8..440c1cf 100644
--- a/code/round_management.h
+++ b/code/round_management.h
@@ -28,6 +28,6 @@ void nextRound(round_t *round);
 
 void createEnemies(round_t *round);
 
-void clearEnemies(round_t *round);
+//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 c1dbfa4..887d9e8 100644
--- a/code/world_data.c
+++ b/code/world_data.c
@@ -38,7 +38,7 @@ int* load_save()
   }
 
   //Nombre d'ennemis
-  if(dataSave[1] > 0 && dataSave[1] < 21)
+  if(dataSave[1] > 0 /*&& dataSave[1] < 210*/)
   {
     dataToAdd[1] = dataSave[1];
   }
@@ -95,107 +95,107 @@ void init_data(world_t *world)
 
 void refresh_data(world_t *world)
 {
-    //Les balles
-    for(int i = 0; i < NB_BULLET; i++)
-    {
-        world->soldier.DestBullet[i].x = world->soldier.charger[i].sprite.x;
-        world->soldier.DestBullet[i].y = world->soldier.charger[i].sprite.y;
-    }
-        
-    //Déplacements
-    if(world->soldier.is_walking)
-    {
-        if(world->soldier.direction == 1 && over_right(&world->soldier.sprite) == 0)
-            walk_right(&world->soldier);
-        else if(world->soldier.direction == -1 && over_left(&world->soldier.sprite) == 0)
-            walk_left(&world->soldier);
 
-        //Si l'animation se termine on la recommence
-        if(world->soldier.walk_counter >= 70)
-            world->soldier.walk_counter = 0;
-        
-        world->soldier.walk_counter += 1;
-    }
-    
-    //Saut
-    if(world->soldier.state_jump != 0)
+  //Si la manche n'est pas finie
+  if(isRoundEnded(&world->rounds) == 0)
+  {
+    updateRound(&world->rounds);
+    for (int i = 0; i < world->rounds.number_enemies ; i++)
     {
-        jump(&world->soldier);
-        world->soldier.jump_counter += 1;
+      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);
+      }
     }
-    plane_fly(&world->supplying);
-
+  }
+  //Sinon si la manche est finie, manche suivante
+  else
+  {
+    nextRound(&world->rounds);
+    //printf("gg ta gagné");
+    //Charger le bon nombre de texture
+  }
 
-    /*enemy_walk(&world->enemy,&world->soldier);
-    world->enemy.DestEnemy.x = world->enemy.sprite.x;
-    world->enemy.DestEnemy.y = world->enemy.sprite.y;
-    enemy_dead(&world->enemy,&world->soldier);*/
+  //Les balles
+  for(int i = 0; i < NB_BULLET; i++)
+  {
+      world->soldier.DestBullet[i].x = world->soldier.charger[i].sprite.x;
+      world->soldier.DestBullet[i].y = world->soldier.charger[i].sprite.y;
+  }
+      
+  //Déplacements
+  if(world->soldier.is_walking)
+  {
+      if(world->soldier.direction == 1 && over_right(&world->soldier.sprite) == 0)
+          walk_right(&world->soldier);
+      else if(world->soldier.direction == -1 && over_left(&world->soldier.sprite) == 0)
+          walk_left(&world->soldier);
+
+      //Si l'animation se termine on la recommence
+      if(world->soldier.walk_counter >= 70)
+          world->soldier.walk_counter = 0;
+      
+      world->soldier.walk_counter += 1;
+  }
+  
+  //Saut
+  if(world->soldier.state_jump != 0)
+  {
+      jump(&world->soldier);
+      world->soldier.jump_counter += 1;
+  }
+  plane_fly(&world->supplying);
 
 
-    //Si la manche n'est pas finie
-    if(isRoundEnded(&world->rounds) == 0)
-    {
-      updateRound(&world->rounds);
-      for (int i = 0; i < world->rounds.number_enemies ; i++)
-      {
-        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
-    }
+  /*enemy_walk(&world->enemy,&world->soldier);
+  world->enemy.DestEnemy.x = world->enemy.sprite.x;
+  world->enemy.DestEnemy.y = world->enemy.sprite.y;
+  enemy_dead(&world->enemy,&world->soldier);*/
 
 
-    shootAfterE(&world->soldier);
+  shootAfterE(&world->soldier);
 
-    world->soldier.time_bullet++;
+  world->soldier.time_bullet++;
 
-    plane_dead(&world->supplying,&world->soldier);
+  plane_dead(&world->supplying,&world->soldier);
 
-    soldier_touch_powerUP(&world->supplying.powerUP,&world->soldier);
+  soldier_touch_powerUP(&world->supplying.powerUP,&world->soldier);
 
-    apply_effect(&world->supplying.powerUP,&world->soldier,&world->supplying.plane);
-    
-    
-    //Position de l'affichage
-    if(world->soldier.is_crouching == 1)
-    {
-        if(world->soldier.direction == 1)
-            world->soldier.DestSoldier.x = world->soldier.sprite.x+36;
-        
-        world->soldier.DestSoldier.y = world->soldier.sprite.y+24;
-    }
-    else if(world->soldier.is_looking_up == 1)
-    {
-        world->soldier.DestSoldier.y = world->soldier.sprite.y-20;
-        world->soldier.DestSoldier.x = world->soldier.sprite.x;
-    }
-    else if(world->soldier.state_jump != 0)
-    {
-        if(world->soldier.direction == 1)
-            world->soldier.DestSoldier.x = world->soldier.sprite.x;
-        else
-            world->soldier.DestSoldier.x = world->soldier.sprite.x+8;
-        
-        world->soldier.DestSoldier.y = world->soldier.sprite.y;
-    }
-    else
-    {
-        world->soldier.DestSoldier.x = world->soldier.sprite.x;
-        world->soldier.DestSoldier.y = world->soldier.sprite.y;
-    }
+  apply_effect(&world->supplying.powerUP,&world->soldier,&world->supplying.plane);
+  
+  
+  //Position de l'affichage
+  if(world->soldier.is_crouching == 1)
+  {
+      if(world->soldier.direction == 1)
+          world->soldier.DestSoldier.x = world->soldier.sprite.x+36;
+      
+      world->soldier.DestSoldier.y = world->soldier.sprite.y+24;
+  }
+  else if(world->soldier.is_looking_up == 1)
+  {
+      world->soldier.DestSoldier.y = world->soldier.sprite.y-20;
+      world->soldier.DestSoldier.x = world->soldier.sprite.x;
+  }
+  else if(world->soldier.state_jump != 0)
+  {
+      if(world->soldier.direction == 1)
+          world->soldier.DestSoldier.x = world->soldier.sprite.x;
+      else
+          world->soldier.DestSoldier.x = world->soldier.sprite.x+8;
+      
+      world->soldier.DestSoldier.y = world->soldier.sprite.y;
+  }
+  else
+  {
+      world->soldier.DestSoldier.x = world->soldier.sprite.x;
+      world->soldier.DestSoldier.y = world->soldier.sprite.y;
+  }
 }
 
 int is_game_over(world_t *world)
@@ -217,7 +217,8 @@ void handle_events(SDL_Event *event,world_t *world)
       //Libère la mémoire du tableau DestBullet pour l'affichage
       free(world->soldier.DestBullet);
       //Libère le tableau d'ennemis
-      clearEnemies(&world->rounds);
+      //clearEnemies(&world->rounds);
+      free(world->rounds.enemies);
       world->gameover = 1;
     }
    
diff --git a/code/world_data.h b/code/world_data.h
index 71d503e..5ce7b9d 100644
--- a/code/world_data.h
+++ b/code/world_data.h
@@ -19,6 +19,7 @@ struct world_s{
     round_t rounds;
     int gameover; /*!< Entier pour la fin du jeu */
     int score;  /*!< Score du joueur */
+    //int gameFinished;
 };
 
 /**
diff --git a/data/save.txt b/data/save.txt
index 6056dd5..0059eaf 100644
--- a/data/save.txt
+++ b/data/save.txt
@@ -1,7 +1,7 @@
 /Vie du joueur au début
 10
 /Nombre d'ennemis au début
-4
+13
 /Nombre d'ennemis en plus à chaque manche
 1
 /Nombre de balles
-- 
GitLab