Skip to content
Snippets Groups Projects
Commit 21f7fa25 authored by bohan2u's avatar bohan2u
Browse files

Fusion

parents 199fe8a7 f295e50d
Branches
No related tags found
No related merge requests found
......@@ -20,6 +20,13 @@ void refresh_graphics(SDL_Renderer *renderer, world_t *world,resources_t *resour
//Fond
SDL_RenderCopy(renderer, resources->background, NULL, NULL);
//Aloocation des ressources ennemis lors d'une nouvelle manche
if(world->rounds.is_new_round == 1)
{
realloc_enemies_ressources(renderer,resources,world);
world->rounds.is_new_round = 0;
}
//Regarder vers le haut
if (world->soldier.sprite.is_visible == 1){
......@@ -85,13 +92,6 @@ void refresh_graphics(SDL_Renderer *renderer, world_t *world,resources_t *resour
{
SDL_RenderCopy(renderer, resources->bullet, NULL, &world->soldier.DestBullet[i]);
}
if(world->rounds.is_new_round == 1)
{
clear_enemies_ressources(resources);
init_enemies_ressources(renderer,resources,world);
world->rounds.is_new_round = 0;
}
//Les ennemis
for (int i = 0; i < world->rounds.number_enemies; i++)
......@@ -192,16 +192,30 @@ 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 = malloc(sizeof(SDL_Texture*)*world->rounds.number_enemies);
resources->enemies = (SDL_Texture**) malloc(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)
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);
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)
{
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)
......@@ -224,11 +238,9 @@ void destroy_textures(resources_t *resources, world_t *world)
SDL_DestroyTexture(resources->soldier_jump_right[i]);
}
for (int i = 0; i < world->rounds.number_enemies; ++i)
{
SDL_DestroyTexture(resources->enemies[i]);
}
printf("nbenemis %d\n",world->rounds.number_enemies);
clear_enemies_ressources(resources,world->rounds.number_enemies);
SDL_DestroyTexture(resources->bullet);
SDL_DestroyTexture(resources->enemy);
SDL_DestroyTexture(resources->plane);
......
......@@ -46,7 +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 clear_enemies_ressources(resources_t *resources);
void realloc_enemies_ressources(SDL_Renderer *renderer, resources_t *resources, world_t *world);
void clear_enemies_ressources(resources_t *resources,int nbEnemies);
void destroy_textures(resources_t *resources, world_t *world);
......
......@@ -58,7 +58,7 @@ void init_enemyType2(enemy_t *enemy)
{
init_sprite(&enemy->sprite, SCREEN_WIDTH+75, SCREEN_HEIGHT-ENEMY_HEIGHT*2-20, ENEMY_WIDTH, ENEMY_HEIGHT, ENEMY_T2_SPEED, 10);
}else{
init_sprite(&enemy->sprite, -75, SCREEN_HEIGHT-ENEMY_HEIGHT*2-20, ENEMY_WIDTH, ENEMY_HEIGHT,ENEMY_T2_SPEED, 10);
init_sprite(&enemy->sprite, -75, SCREEN_HEIGHT-ENEMY_HEIGHT*2-20, ENEMY_WIDTH, ENEMY_HEIGHT,ENEMY_T2_SPEED, 5);
}
enemy->type = 2;
enemy->DestEnemy.x = enemy->sprite.x;
......
......@@ -15,7 +15,7 @@ int* getDataSave(const char *name)
//Deplacement : nombre de caractere du commentaire +2 (Sauf premier +1)
int deplacement[4] = {24,28,43,19};
int *data = malloc(sizeof(int));
int *data = malloc(sizeof(int)*4);
//int data[4];
for(int i = 0; i < nb_lines/2; i++)
{
......
......@@ -4,7 +4,7 @@
int isRoundEnded(round_t *round)
{
for (int i = 0; i < round->number_enemies; ++i)
for (int i = 0; i < round->number_enemies; i++)
{
if(round->enemies[i].sprite.is_visible == 1)
{
......@@ -23,7 +23,13 @@ void initFirstRound(round_t *round, int nbEnemies, int incrementation)
round->counter = 0;
round->index_to_spawn = 0;
round->is_new_round = 0;
createEnemies(round);
round->enemies = (enemy_t*) malloc(sizeof(enemy_t)*round->number_enemies);
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);
}
......@@ -44,20 +50,29 @@ void updateRound(round_t *round)
void nextRound(round_t *round)
{
clearEnemies(round);
round->round_number++;
printf("Manche %d\n",round->round_number);
round->number_enemies = round->number_enemies + round->incrementation;
round->index_to_spawn = 0;
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++)
{
printf("avant %f i : %d\n",round->enemies[i].sprite.x,i);
}
createEnemies(round);
for (int i = 0; i < round->number_enemies; i++)
{
printf("apres %f i : %d\n",round->enemies[i].sprite.x,i);
}
}
//Créer nbEnemies
void createEnemies(round_t *round)
{
round->enemies = malloc(sizeof(enemy_t)*round->number_enemies);
round->enemies = (enemy_t*) realloc(round->enemies,sizeof(enemy_t)*round->number_enemies);
for (int i = 0; i < round->number_enemies; i++)
{
init_enemy(&round->enemies[i]);
......@@ -67,4 +82,5 @@ void createEnemies(round_t *round)
void clearEnemies(round_t *round)
{
free(round->enemies);
round->enemies = NULL;
}
\ No newline at end of file
......@@ -36,7 +36,14 @@ void init_bullet(soldier_t *soldier)
init_sprite(&soldier->charger[i].sprite, -10, -10, BULLET_WIDTH, BULLET_WIDTH, BULLET_SPEED,1);
set_invisible(&soldier->charger[i].sprite);
soldier->charger[i].shoot = 0;
soldier->charger[i].sens = soldier->charger[29].sens;
//soldier->charger[i].sens = soldier->charger[29].sens;
if(soldier->is_looking_up == 1)
soldier->charger[i].sens = 'h';
else if(soldier->direction == 1)
soldier->charger[i].sens = 'd';
else if(soldier->direction == -1)
soldier->charger[i].sens = 'g';
soldier->DestBullet[i].x = soldier->charger[i].sprite.x;
soldier->DestBullet[i].y = soldier->charger[i].sprite.y;
soldier->DestBullet[i].w = BULLET_WIDTH;
......@@ -85,7 +92,8 @@ void shoot(soldier_t *soldier){
{
if(soldier->direction == 1)
soldier->charger[soldier->present_bullet].sprite.x = soldier->sprite.x+SOLDIER_WIDTH/2-2;
else{
else
{
soldier->charger[soldier->present_bullet].sprite.x = soldier->sprite.x+30;
}
soldier->charger[soldier->present_bullet].sprite.y = ORDERED_BULLET-SOLDIER_HEIGHT+15;
......@@ -122,13 +130,18 @@ void shoot(soldier_t *soldier){
void shootAfterE(soldier_t *soldier){
for (int i = 0; i < NB_BULLET; ++i)
{
if (soldier->charger[i].shoot == 1 && over_right(&soldier->charger[i].sprite) == 0 && over_left(&soldier->charger[i].sprite) == 0 ){
if (soldier->charger[i].sens == 'd'){
if (soldier->charger[i].shoot == 1 && over_right(&soldier->charger[i].sprite) == 0 && over_left(&soldier->charger[i].sprite) == 0 )
{
if (soldier->charger[i].sens == 'd')
{
soldier->charger[i].sprite.x += soldier->charger[i].sprite.v;
}else if (soldier->charger[i].sens == 'g')
}
else if (soldier->charger[i].sens == 'g')
{
soldier->charger[i].sprite.x -= soldier->charger[i].sprite.v;
}else{
}
else
{
soldier->charger[i].sprite.y -= soldier->charger[i].sprite.v;
}
//print_sprite(&soldier->charger[i].sprite);
......
......@@ -16,7 +16,7 @@ int* load_save()
int* dataSave;
dataSave = getDataSave("../data/save.txt");
int *dataToAdd = malloc(sizeof(int));
int *dataToAdd = malloc(sizeof(int)*3);
//Initialiser les valeurs par défaut
dataToAdd[0] = SOLDIER_HP;
dataToAdd[1] = NUMBER_ENEMIES_START;
......@@ -39,6 +39,7 @@ int* load_save()
{
dataToAdd[2] = dataSave[2];
}
free(dataSave);
return dataToAdd;
}
......@@ -64,6 +65,9 @@ void init_data(world_t *world)
//Initialisation du soldat
init_soldier(&world->soldier,data[0]);
setBulletD(&world->soldier);
//Libérer data
free(data);
init_supplying(&world->supplying,1);
......@@ -156,8 +160,6 @@ void refresh_data(world_t *world)
apply_effect(&world->supplying.powerUP,&world->soldier,world->supplying.drop);
//Position de l'affichage
if(world->soldier.is_crouching == 1)
......@@ -198,13 +200,15 @@ void handle_events(SDL_Event *event,world_t *world)
//Uint8 *keystates;
while(SDL_PollEvent(event))
{
//Si l'utilisateur a cliqué sur le X de la fenêtre
if( event->type == SDL_QUIT || event->key.keysym.sym == SDLK_ESCAPE)
//Si l'utilisateur a cliqué sur le X de la fenêtre ou Echap
if(event->type == SDL_QUIT || event->key.keysym.sym == SDLK_ESCAPE)
{
//On indique la fin du jeu
//Sauvegarde la partie
save_game(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);
world->gameover = 1;
}
......
/Vie du joueur au début
10
/Nombre d'ennemis au début
10
4
/Nombre d'ennemis en plus à chaque manche
5
1
/Nombre de balles
30
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment