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