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