Skip to content
Snippets Groups Projects
Commit 83bb8eee authored by suck5u's avatar suck5u
Browse files

merge

parents 9d0d86c6 21f7fa25
No related branches found
No related tags found
No related merge requests found
...@@ -22,7 +22,17 @@ void init_enemy(enemy_t *enemy) ...@@ -22,7 +22,17 @@ void init_enemy(enemy_t *enemy)
}else{ }else{
init_enemyType4(enemy); 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) void init_enemyType1(enemy_t *enemy)
...@@ -91,13 +101,15 @@ void init_enemyType4(enemy_t *enemy) ...@@ -91,13 +101,15 @@ void init_enemyType4(enemy_t *enemy)
void enemy_walk(enemy_t *enemy,soldier_t *soldier) 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){ if(soldier->sprite.x > enemy->sprite.x){
enemy->sprite.x += enemy->sprite.v; enemy->sprite.x += enemy->sprite.v;
}else{ }else{
enemy->sprite.x -= enemy->sprite.v; 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) ...@@ -107,6 +119,12 @@ void enemy_dead(enemy_t *enemy,soldier_t *soldier)
for(int i = 0; i < NB_BULLET; i++){ for(int i = 0; i < NB_BULLET; i++){
handle_sprites_collision(&enemy->sprite,&soldier->charger[i].sprite); 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) void enemy_touch_soldier(enemy_t *enemy,soldier_t *soldier)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#define __ENEMIE_H__ #define __ENEMIE_H__
#include "constant.h" #include "constant.h"
#include "soldier.h" #include "powerUp.h"
#include <SDL2/SDL.h> #include <SDL2/SDL.h>
...@@ -15,6 +15,9 @@ struct enemy_s{ ...@@ -15,6 +15,9 @@ struct enemy_s{
SDL_Rect DestEnemy; SDL_Rect DestEnemy;
int type; int type;
int is_moving; int is_moving;
int power;
int drop;
powerUP_t powerUP;
}; };
/** /**
* \brief Type qui correspond au paramètre du soldat * \brief Type qui correspond au paramètre du soldat
......
...@@ -30,6 +30,13 @@ void init_powerUP(powerUP_t *powerUP,sprite_t *sprite){ ...@@ -30,6 +30,13 @@ void init_powerUP(powerUP_t *powerUP,sprite_t *sprite){
powerUP->DestPowerUP.h = POWERUP_SIZE; powerUP->DestPowerUP.h = POWERUP_SIZE;
set_invisible(&powerUP->sprite); set_invisible(&powerUP->sprite);
powerUP->apply_effect = 0; 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) void plane_fly(supplying_t *supplying)
...@@ -69,9 +76,16 @@ void soldier_touch_powerUP(powerUP_t *powerUP,soldier_t *soldier) ...@@ -69,9 +76,16 @@ void soldier_touch_powerUP(powerUP_t *powerUP,soldier_t *soldier)
handle_sprites_collision_damage_1sprite(&soldier->sprite,&powerUP->sprite); handle_sprites_collision_damage_1sprite(&soldier->sprite,&powerUP->sprite);
} }
void apply_effect(powerUP_t *powerUP,soldier_t *soldier,sprite_t *sprite){ void apply_effect(powerUP_t *powerUP,soldier_t *soldier,int drop){
if(powerUP->sprite.is_visible == 0 && powerUP->apply_effect == 0 && sprite->is_visible == 0){ if(powerUP->sprite.is_visible == 0 && powerUP->apply_effect == 0 && drop == 1){
soldier->sprite.v = soldier->sprite.v + 10; 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; powerUP->apply_effect = 1;
} }
} }
\ No newline at end of file
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
struct powerUP_s{ struct powerUP_s{
sprite_t sprite; sprite_t sprite;
SDL_Rect DestPowerUP; SDL_Rect DestPowerUP;
int type;
int apply_effect; int apply_effect;
}; };
/** /**
...@@ -47,6 +48,6 @@ void plane_dead(supplying_t *supplying,soldier_t *soldier); ...@@ -47,6 +48,6 @@ void plane_dead(supplying_t *supplying,soldier_t *soldier);
void soldier_touch_powerUP(powerUP_t *powerUP,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 #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) ...@@ -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 // Si sprite sort de l'écran return true = 1
int over_left (sprite_t*sprite) int over_left (sprite_t*sprite)
{ {
......
...@@ -34,6 +34,8 @@ int over_left (sprite_t*sprite); ...@@ -34,6 +34,8 @@ int over_left (sprite_t*sprite);
int over_right (sprite_t*sprite); int over_right (sprite_t*sprite);
void print_sprite(sprite_t*sprite);
int sprites_collide(sprite_t *sp2, sprite_t *sp1); int sprites_collide(sprite_t *sp2, sprite_t *sp1);
void handle_sprites_collision(sprite_t *sp1, sprite_t *sp2); void handle_sprites_collision(sprite_t *sp1, sprite_t *sp2);
......
...@@ -8,16 +8,7 @@ ...@@ -8,16 +8,7 @@
#include "world_data.h" #include "world_data.h"
#include "math.h" //Nécessaire pour la collision entre deux sprites #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() int* load_save()
{ {
...@@ -157,7 +148,6 @@ void refresh_data(world_t *world) ...@@ -157,7 +148,6 @@ void refresh_data(world_t *world)
world->enemy.DestEnemy.y = world->enemy.sprite.y; world->enemy.DestEnemy.y = world->enemy.sprite.y;
enemy_dead(&world->enemy,&world->soldier);*/ enemy_dead(&world->enemy,&world->soldier);*/
shootAfterE(&world->soldier); shootAfterE(&world->soldier);
world->soldier.time_bullet++; world->soldier.time_bullet++;
...@@ -166,7 +156,7 @@ void refresh_data(world_t *world) ...@@ -166,7 +156,7 @@ void refresh_data(world_t *world)
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); apply_effect(&world->supplying.powerUP,&world->soldier,world->supplying.drop);
//Position de l'affichage //Position de l'affichage
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment