Skip to content
Snippets Groups Projects
Commit 51a3bbb3 authored by suck5u's avatar suck5u
Browse files

Apparition des ennemis tous les X temps

parent 3dde4a52
Branches
No related tags found
No related merge requests found
...@@ -192,18 +192,23 @@ void init_enemies_ressources(SDL_Renderer *renderer, resources_t *resources, wor ...@@ -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->background);
SDL_DestroyTexture(resources->soldier_idle_left); SDL_DestroyTexture(resources->soldier_idle_left);
SDL_DestroyTexture(resources->soldier_aim_up_left); SDL_DestroyTexture(resources->soldier_aim_up_left);
SDL_DestroyTexture(resources->soldier_crouch_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++) for(int i = 0; i < 10; i++)
{ {
SDL_DestroyTexture(resources->soldier_run_left[i]); SDL_DestroyTexture(resources->soldier_run_left[i]);
...@@ -212,9 +217,10 @@ void destroy_textures(resources_t *resources) ...@@ -212,9 +217,10 @@ void destroy_textures(resources_t *resources)
SDL_DestroyTexture(resources->soldier_jump_right[i]); SDL_DestroyTexture(resources->soldier_jump_right[i]);
} }
SDL_DestroyTexture(resources->soldier_idle_right); for (int i = 0; i < world->rounds.number_enemies; ++i)
SDL_DestroyTexture(resources->soldier_aim_up_right); {
SDL_DestroyTexture(resources->soldier_crouch_right); SDL_DestroyTexture(resources->enemies[i]);
}
SDL_DestroyTexture(resources->bullet); SDL_DestroyTexture(resources->bullet);
SDL_DestroyTexture(resources->enemy); SDL_DestroyTexture(resources->enemy);
......
...@@ -46,9 +46,9 @@ void init_ressources(SDL_Renderer *renderer, resources_t *resources, world_t *wo ...@@ -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 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); //void rotate_right(SDL_Renderer *renderer, world_t *world,resources_t *resources);
......
...@@ -22,7 +22,7 @@ void init_enemy(enemy_t *enemy) ...@@ -22,7 +22,7 @@ void init_enemy(enemy_t *enemy)
}else{ }else{
init_enemyType4(enemy); init_enemyType4(enemy);
} }
enemy->is_moving = 1; enemy->is_moving = 0;
} }
void init_enemyType1(enemy_t *enemy) void init_enemyType1(enemy_t *enemy)
......
...@@ -88,7 +88,7 @@ int main(void) ...@@ -88,7 +88,7 @@ int main(void)
SDL_RenderPresent(renderer); SDL_RenderPresent(renderer);
} }
// Quitter SDL // Quitter SDL
destroy_textures(&resources); destroy_textures(&resources,&world);
SDL_DestroyRenderer(renderer); SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window); SDL_DestroyWindow(window);
SDL_Quit(); SDL_Quit();
......
...@@ -14,9 +14,16 @@ void save_game() ...@@ -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) ...@@ -26,16 +33,27 @@ void initFirstRound(round_t *round, int nbEnemies, int incrementation)
round->round_number = 0; round->round_number = 0;
round->number_enemies = nbEnemies; round->number_enemies = nbEnemies;
round->incrementation = incrementation; round->incrementation = incrementation;
round->counter = 0;
round->index_to_spawn = 0;
createEnemies(round); createEnemies(round);
} }
//Actualiser qui se déplace //Actualiser qui se déplace
void updateRound(round_t *round) 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) ...@@ -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
...@@ -9,6 +9,8 @@ struct round_s ...@@ -9,6 +9,8 @@ struct round_s
int incrementation; //Nombre d'ennemis en + à chaque round int incrementation; //Nombre d'ennemis en + à chaque round
int number_enemies; //Nombre d'ennemis actuel dans la manche int number_enemies; //Nombre d'ennemis actuel dans la manche
enemy_t *enemies; //Tableau d'ennemis 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 * \brief Type qui correspond au round
...@@ -16,7 +18,7 @@ struct round_s ...@@ -16,7 +18,7 @@ struct round_s
typedef struct round_s round_t; typedef struct round_s round_t;
int isRoundEnded(); int isRoundEnded(round_t *round);
void initFirstRound(round_t *round, int nbEnemies, int incrementation); void initFirstRound(round_t *round, int nbEnemies, int incrementation);
...@@ -26,6 +28,6 @@ void nextRound(round_t *round); ...@@ -26,6 +28,6 @@ void nextRound(round_t *round);
void createEnemies(round_t *round); void createEnemies(round_t *round);
void clearEnemies(); void clearEnemies(round_t *round);
#endif #endif
\ No newline at end of file
...@@ -91,23 +91,27 @@ void refresh_data(world_t *world) ...@@ -91,23 +91,27 @@ void refresh_data(world_t *world)
//Si la manche n'est pas finie //Si la manche n'est pas finie
if(isRoundEnded() == 0) if(isRoundEnded(&world->rounds) == 0)
{ {
updateRound(&world->rounds); updateRound(&world->rounds);
for (int i = 0; i < world->rounds.number_enemies ; i++) for (int i = 0; i < world->rounds.number_enemies ; i++)
{ {
enemy_walk(&world->rounds.enemies[i],&world->soldier); if(world->rounds.enemies[i].is_moving == 1)
world->rounds.enemies[i].DestEnemy.x = world->rounds.enemies[i].sprite.x; {
world->rounds.enemies[i].DestEnemy.y = world->rounds.enemies[i].sprite.y; enemy_walk(&world->rounds.enemies[i],&world->soldier);
//Si l'ennemi touche le soldat world->rounds.enemies[i].DestEnemy.x = world->rounds.enemies[i].sprite.x;
//enemy_touch_soldier(&world->rounds.enemies[i],&world->soldier); world->rounds.enemies[i].DestEnemy.y = world->rounds.enemies[i].sprite.y;
enemy_dead(&world->rounds.enemies[i],&world->soldier); //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 //Sinon si la manche est finie, manche suivante
else else
{ {
nextRound(&world->rounds); nextRound(&world->rounds);
//printf("gg ta gagné");
//Charger le bon nombre de texture //Charger le bon nombre de texture
} }
...@@ -170,6 +174,7 @@ void handle_events(SDL_Event *event,world_t *world) ...@@ -170,6 +174,7 @@ void handle_events(SDL_Event *event,world_t *world)
//On indique la fin du jeu //On indique la fin du jeu
//Libère la mémoire du tableau DestBullet pour l'affichage //Libère la mémoire du tableau DestBullet pour l'affichage
free(world->soldier.DestBullet); free(world->soldier.DestBullet);
clearEnemies(&world->rounds);
world->gameover = 1; world->gameover = 1;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment