diff --git a/code/display.c b/code/display.c index 9a500a1441843b6196de366f2587b5cfe4e461b1..e54a5111266011101c88590d0a0fa2bb184344e4 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 8961cdc9d835e0895b2880b43c5e28e231a333c9..c7f321abd08566f1fde16fefe81e2bd1e1dac421 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 d8eb24a408a4e10be127b87c3cc8fcaf93e00487..b760b447f6fff6691514b355c491bac1919dbbdb 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 ae748b8e95f5663aea8d25f8c919f453ab9455db..440c1cf5b1c48d91f8f03c26b2222330e405018b 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 c1dbfa44deeb9b69f2f3bc394963db7209c44c6b..887d9e8a4ee4aea3ba06b62fbc48961a8a6c7f35 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 71d503e82eac8df63fc64d932194762776a592d4..5ce7b9d530f2b9c2d78d69571f0ec8f1b9231a03 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 6056dd52a552165dc886b2eec085f4c51e9e27b4..0059eafd4278182832e8f16b46287f428337bcaa 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