Skip to content
Snippets Groups Projects
Commit 199fe8a7 authored by bohan2u's avatar bohan2u
Browse files

Ajout du spawn de power up en tuant un ennemie et d'un deuxieme power up

parent fc53b2f6
No related branches found
No related tags found
No related merge requests found
......@@ -22,7 +22,17 @@ void init_enemy(enemy_t *enemy)
}else{
init_enemyType4(enemy);
}
enemy->is_moving = 0;
int p = rand()%10+0;
if (p==1)
{
init_powerUP(&enemy->powerUP,&enemy->sprite);
enemy->power = 1;
}else{
enemy->power = 0;
}
enemy->is_moving = 0;
enemy->drop = 0;
}
void init_enemyType1(enemy_t *enemy)
......@@ -91,13 +101,15 @@ void init_enemyType4(enemy_t *enemy)
void enemy_walk(enemy_t *enemy,soldier_t *soldier)
{
if (sprites_collide(&enemy->sprite, &soldier->sprite) == 0 && enemy->is_moving == 1)
if (sprites_collide(&enemy->sprite, &soldier->sprite) == 0 && enemy->is_moving == 1 && enemy->sprite.is_visible == 1)
{
if(soldier->sprite.x > enemy->sprite.x){
enemy->sprite.x += enemy->sprite.v;
enemy->sprite.x += enemy->sprite.v;
}else{
enemy->sprite.x -= enemy->sprite.v;
}
enemy->powerUP.sprite.x = enemy->sprite.x;
enemy->powerUP.DestPowerUP.x = enemy->powerUP.sprite.x;
}
}
......@@ -107,6 +119,12 @@ void enemy_dead(enemy_t *enemy,soldier_t *soldier)
for(int i = 0; i < NB_BULLET; i++){
handle_sprites_collision(&enemy->sprite,&soldier->charger[i].sprite);
}
if (enemy->sprite.is_visible == 0 && enemy->drop == 0 && enemy->power == 1)
{
set_visible(&enemy->powerUP.sprite);
enemy->drop=1;
print_sprite(&enemy->powerUP.sprite);
}
}
void enemy_touch_soldier(enemy_t *enemy,soldier_t *soldier)
......
......@@ -2,7 +2,7 @@
#define __ENEMIE_H__
#include "constant.h"
#include "soldier.h"
#include "powerUp.h"
#include <SDL2/SDL.h>
......@@ -15,6 +15,9 @@ struct enemy_s{
SDL_Rect DestEnemy;
int type;
int is_moving;
int power;
int drop;
powerUP_t powerUP;
};
/**
* \brief Type qui correspond au paramètre du soldat
......
......@@ -30,6 +30,13 @@ void init_powerUP(powerUP_t *powerUP,sprite_t *sprite){
powerUP->DestPowerUP.h = POWERUP_SIZE;
set_invisible(&powerUP->sprite);
powerUP->apply_effect = 0;
int random = rand()%2+0;
if (random == 1)
{
powerUP->type = 0;
}else{
powerUP->type = 1;
}
}
void plane_fly(supplying_t *supplying)
......@@ -69,9 +76,16 @@ void soldier_touch_powerUP(powerUP_t *powerUP,soldier_t *soldier)
handle_sprites_collision_damage_1sprite(&soldier->sprite,&powerUP->sprite);
}
void apply_effect(powerUP_t *powerUP,soldier_t *soldier,sprite_t *sprite){
if(powerUP->sprite.is_visible == 0 && powerUP->apply_effect == 0 && sprite->is_visible == 0){
soldier->sprite.v = soldier->sprite.v + 10;
void apply_effect(powerUP_t *powerUP,soldier_t *soldier,int drop){
if(powerUP->sprite.is_visible == 0 && powerUP->apply_effect == 0 && drop == 1){
print_sprite(&soldier->sprite);
if (powerUP->type == 0)
{
soldier->sprite.v = soldier->sprite.v + 10;
}else{
soldier->sprite.hp = soldier->sprite.hp + 10;
print_sprite(&soldier->sprite);
}
powerUP->apply_effect = 1;
}
}
\ No newline at end of file
......@@ -12,6 +12,7 @@
struct powerUP_s{
sprite_t sprite;
SDL_Rect DestPowerUP;
int type;
int apply_effect;
};
/**
......@@ -47,6 +48,6 @@ void plane_dead(supplying_t *supplying,soldier_t *soldier);
void soldier_touch_powerUP(powerUP_t *powerUP,soldier_t *soldier);
void apply_effect(powerUP_t *powerUP,soldier_t *soldier,sprite_t *sprite);
void apply_effect(powerUP_t *powerUP,soldier_t *soldier,int drop);
#endif
\ No newline at end of file
......@@ -20,6 +20,18 @@ void init_sprite(sprite_t *sprite, int x, int y, int w, int h, float v,int hp)
}
void print_sprite(sprite_t*sprite)
{
printf("Coordonnées x: %f \n",sprite->x);
printf("Coordonnées y: %f \n",sprite->y);
printf("Hauteur: %f \n",sprite->h);
printf("Largeur: %f \n",sprite->w);
printf("Vitesse: %f \n",sprite->v);
printf("Visible: %d \n",sprite->is_visible);
printf("HP: %d \n",sprite->hp);
}
// Si sprite sort de l'écran return true = 1
int over_left (sprite_t*sprite)
{
......
......@@ -34,6 +34,8 @@ int over_left (sprite_t*sprite);
int over_right (sprite_t*sprite);
void print_sprite(sprite_t*sprite);
int sprites_collide(sprite_t *sp2, sprite_t *sp1);
void handle_sprites_collision(sprite_t *sp1, sprite_t *sp2);
......
......@@ -8,16 +8,7 @@
#include "world_data.h"
#include "math.h" //Nécessaire pour la collision entre deux sprites
void print_sprite(sprite_t*sprite)
{
printf("Coordonnées x: %f \n",sprite->x);
printf("Coordonnées y: %f \n",sprite->y);
printf("Hauteur: %f \n",sprite->h);
printf("Largeur: %f \n",sprite->w);
printf("Vitesse: %f \n",sprite->v);
printf("Visible: %d \n",sprite->is_visible);
printf("HP: %d \n",sprite->hp);
}
int* load_save()
{
......@@ -127,7 +118,7 @@ void refresh_data(world_t *world)
world->enemy.DestEnemy.y = world->enemy.sprite.y;
enemy_dead(&world->enemy,&world->soldier);*/
//Si la manche n'est pas finie
if(isRoundEnded(&world->rounds) == 0)
{
......@@ -143,6 +134,8 @@ void refresh_data(world_t *world)
//enemy_touch_soldier(&world->rounds.enemies[i],&world->soldier);
enemy_dead(&world->rounds.enemies[i],&world->soldier);
}
soldier_touch_powerUP(&world->rounds.enemies[i].powerUP,&world->soldier);
apply_effect(&world->rounds.enemies[i].powerUP,&world->soldier,world->rounds.enemies[i].drop);
}
}
//Sinon si la manche est finie, manche suivante
......@@ -153,6 +146,7 @@ void refresh_data(world_t *world)
//Charger le bon nombre de texture
}
soldier_touch_powerUP(&world->supplying.powerUP,&world->soldier);
shootAfterE(&world->soldier);
......@@ -160,9 +154,7 @@ void refresh_data(world_t *world)
plane_dead(&world->supplying,&world->soldier);
soldier_touch_powerUP(&world->supplying.powerUP,&world->soldier);
apply_effect(&world->supplying.powerUP,&world->soldier,&world->supplying.plane);
apply_effect(&world->supplying.powerUP,&world->soldier,world->supplying.drop);
......
/Vie du joueur au début
10
/Nombre d'ennemis au début
15
10
/Nombre d'ennemis en plus à chaque manche
5
/Nombre de balles
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment