diff --git a/code/constant.h b/code/constant.h index 92d709c9226d83504127c4487db5854a2107faca..95bdff035785770fb8a84ba3c621ae5f6c5f96a2 100644 --- a/code/constant.h +++ b/code/constant.h @@ -57,23 +57,13 @@ /** * \brief Hauteur de l'ennemie du type 4 */ -#define ENEMY_T4_HEIGHT 48 +#define ENEMY_T4_HEIGHT 38 /** * \brief Largeur de l'ennemie du type 4 */ -#define ENEMY_T4_WIDTH 38 - -/** - * \brief Hauteur de l'ennemie du type 1 - */ -#define ENEMY_T1_HEIGHT 86 - -/** - * \brief Largeur de l'ennemie du type 1 - */ -#define ENEMY_T1_WIDTH 71 +#define ENEMY_T4_WIDTH 25 /** @@ -182,4 +172,14 @@ #define TIME_RELOAD 300 +/** + * \brief Largeur du soldat accroupi +*/ +#define SPEED_BONUS 1 + +/** + * \brief Vitesse de la balle du joueur +*/ +#define HEALTH_BONUS 5 + #endif diff --git a/code/display.c b/code/display.c index 2c59197eac20c76a244501b7a58144e4dd31752e..268fcd72bb7d89cf924c05fd5e12bd33c638cf16 100644 --- a/code/display.c +++ b/code/display.c @@ -97,7 +97,7 @@ void refresh_graphics(SDL_Renderer *renderer, world_t *world,resources_t *resour { if(world->soldier.charger[i].sprite.is_visible == 1) { - SDL_RenderCopy(renderer, resources->bullet, NULL, &world->soldier.DestBullet[i]); + SDL_RenderCopy(renderer, resources->bullet, NULL, &world->soldier.charger[i].DestBullet); } } @@ -125,11 +125,17 @@ void refresh_graphics(SDL_Renderer *renderer, world_t *world,resources_t *resour } if (world->supplying.plane.is_visible == 1){ - load_texture_plane(resources, renderer, world); + if (world->supplying.sens == 0) + { + load_texture_plane_right(resources, renderer, world); + }else{ + load_texture_plane_left(resources, renderer, world); + } }else{ if (world->supplying.powerUP.sprite.is_visible == 1 && world->supplying.powerUP.type == 0){ load_texture_powerUp_type0(resources, renderer, &world->supplying.powerUP); - }else{ + }else if (world->supplying.powerUP.sprite.is_visible == 1 && world->supplying.powerUP.type == 1) + { load_texture_powerUp_type1(resources, renderer, &world->supplying.powerUP); } } @@ -245,7 +251,8 @@ void init_ressources(SDL_Renderer *renderer, resources_t *resources, world_t *wo resources->powerUp[0] = charger_image_transparente("../resources/PowerUp_Vitesse.bmp", renderer, 255,0,255); resources->powerUp[1] = charger_image_transparente("../resources/PowerUp_Sante.bmp", renderer, 255,0,255); - resources->plane = charger_image_transparente("../resources/Plane.bmp", renderer, 255,0,255); + resources->plane[0] = charger_image_transparente("../resources/PlaneD.bmp", renderer, 255,0,255); + resources->plane[1] = charger_image_transparente("../resources/PlaneG.bmp", renderer, 255,0,255); resources->font = load_font("../resources/arial.ttf",14); } @@ -278,7 +285,8 @@ void destroy_textures(resources_t *resources, world_t *world) } SDL_DestroyTexture(resources->bullet); - SDL_DestroyTexture(resources->plane); + SDL_DestroyTexture(resources->plane[0]); + SDL_DestroyTexture(resources->plane[1]); SDL_DestroyTexture(resources->powerUp[0]); SDL_DestroyTexture(resources->powerUp[1]); @@ -556,9 +564,13 @@ void load_texture_powerUp_type1(resources_t *resources, SDL_Renderer *renderer, SDL_RenderCopy(renderer, resources->powerUp[1], NULL, &powerUP->DestPowerUP); } -void load_texture_plane(resources_t *resources, SDL_Renderer *renderer, world_t *world) +void load_texture_plane_right(resources_t *resources, SDL_Renderer *renderer, world_t *world) +{ + SDL_RenderCopy(renderer, resources->plane[0], NULL, &world->supplying.DestPlane); +} +void load_texture_plane_left(resources_t *resources, SDL_Renderer *renderer, world_t *world) { - SDL_RenderCopy(renderer, resources->plane, NULL, &world->supplying.DestPlane); + SDL_RenderCopy(renderer, resources->plane[1], NULL, &world->supplying.DestPlane); } /** diff --git a/code/display.h b/code/display.h index f64b97f0eb2d1bba09e3711bf1c82d4363b9b5c4..97dbca2a6bbdb504130f427f4130aacdaff23bc8 100644 --- a/code/display.h +++ b/code/display.h @@ -34,7 +34,7 @@ struct resources_s SDL_Texture* enemyT3_run_left[10]; SDL_Texture* enemyT3_run_right[10]; SDL_Texture* powerUp[2]; - SDL_Texture* plane; + SDL_Texture* plane[2]; SDL_Texture* bullet; /*!< resources liée à l'image des balles. */ @@ -54,12 +54,6 @@ void refresh_graphics(SDL_Renderer *renderer, world_t *world,resources_t *resour void init_ressources(SDL_Renderer *renderer, resources_t *resources, world_t *world); -//void init_enemies_ressources(SDL_Renderer *renderer, resources_t *resources, world_t *world); - -//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); void rotate_right(SDL_Renderer *renderer, world_t *world,SDL_Texture* texture, int i); @@ -86,15 +80,13 @@ void load_texture_crouch_right(resources_t *resources, SDL_Renderer *renderer, w void load_texture_jump_right(resources_t *resources, SDL_Renderer *renderer, world_t *world); -//void load_texture_enemy(resources_t *resources, SDL_Renderer *renderer, world_t *world); - -//void load_texture_enemies(resources_t *resources, SDL_Renderer *renderer, world_t *world, int i); - void load_texture_powerUp_type0(resources_t *resources, SDL_Renderer *renderer, powerUP_t *powerUP); void load_texture_powerUp_type1(resources_t *resources, SDL_Renderer *renderer, powerUP_t *powerUP); -void load_texture_plane(resources_t *resources, SDL_Renderer *renderer, world_t *world); +void load_texture_plane_left(resources_t *resources, SDL_Renderer *renderer, world_t *world); + +void load_texture_plane_right(resources_t *resources, SDL_Renderer *renderer, world_t *world); void init_ttf(); diff --git a/code/enemy.c b/code/enemy.c index 269f47b30f44b57e111f9e783ca95e952964854c..dcc7adddfd966010470ed7e58f7236de5f0b03bb 100644 --- a/code/enemy.c +++ b/code/enemy.c @@ -40,18 +40,18 @@ void init_enemyType1(enemy_t *enemy) int random = rand()%2+0; if (random == 1) { - init_sprite(&enemy->sprite, SCREEN_WIDTH+75, SCREEN_HEIGHT-ENEMY_T1_HEIGHT*2-20, ENEMY_T1_WIDTH, ENEMY_T1_HEIGHT, ENEMY_SPEED, 1); + init_sprite(&enemy->sprite, SCREEN_WIDTH+75, SCREEN_HEIGHT-ENEMY_HEIGHT*2-20, ENEMY_WIDTH, ENEMY_HEIGHT, ENEMY_SPEED, 1); enemy->direction = -1; }else{ - init_sprite(&enemy->sprite, -75, SCREEN_HEIGHT-ENEMY_T1_HEIGHT*2-20, ENEMY_T1_WIDTH, ENEMY_T1_HEIGHT, ENEMY_SPEED, 1); + init_sprite(&enemy->sprite, -75, SCREEN_HEIGHT-ENEMY_HEIGHT*2-20, ENEMY_WIDTH, ENEMY_HEIGHT, ENEMY_SPEED, 1); enemy->direction = 1; } enemy->type = 1; enemy->score = 1; enemy->DestEnemy.x = enemy->sprite.x; enemy->DestEnemy.y = enemy->sprite.y; - enemy->DestEnemy.w = ENEMY_T1_WIDTH; - enemy->DestEnemy.h = ENEMY_T1_HEIGHT; + enemy->DestEnemy.w = ENEMY_WIDTH; + enemy->DestEnemy.h = ENEMY_HEIGHT; } void init_enemyType2(enemy_t *enemy) @@ -97,10 +97,10 @@ void init_enemyType4(enemy_t *enemy) int random = rand()%2+0; if (random == 1) { - init_sprite(&enemy->sprite, SCREEN_WIDTH+75, SCREEN_HEIGHT-ENEMY_T4_HEIGHT*2-40, ENEMY_T4_WIDTH, ENEMY_T4_HEIGHT, 1, 1); + init_sprite(&enemy->sprite, SCREEN_WIDTH+75, SCREEN_HEIGHT-ENEMY_T4_HEIGHT*2-70, ENEMY_T4_WIDTH, ENEMY_T4_HEIGHT, 1, 1); enemy->direction = -1; }else{ - init_sprite(&enemy->sprite, -75, SCREEN_HEIGHT-ENEMY_T4_HEIGHT*2-40, ENEMY_T4_WIDTH, ENEMY_T4_HEIGHT,1, 1); + init_sprite(&enemy->sprite, -75, SCREEN_HEIGHT-ENEMY_T4_HEIGHT*2-70, ENEMY_T4_WIDTH, ENEMY_T4_HEIGHT,1, 1); enemy->direction = 1; } enemy->type = 4; diff --git a/code/powerUp.c b/code/powerUp.c index 940dbcedd8a65b1c92141bbae587913439633ebe..add24923bdf581e19d646df56984523d8d5e0dec 100644 --- a/code/powerUp.c +++ b/code/powerUp.c @@ -80,9 +80,9 @@ void apply_effect(powerUP_t *powerUP,soldier_t *soldier,int drop){ if(powerUP->sprite.is_visible == 0 && powerUP->apply_effect == 0 && drop == 1){ if (powerUP->type == 0) { - soldier->sprite.v = soldier->sprite.v + 10; + soldier->sprite.v = soldier->sprite.v + SPEED_BONUS; }else{ - soldier->sprite.hp = soldier->sprite.hp + 10; + soldier->sprite.hp = soldier->sprite.hp + HEALTH_BONUS; } powerUP->apply_effect = 1; } diff --git a/code/soldier.c b/code/soldier.c index c2bdd17b3d950c3084294760ae44891238a617d1..f3281c6c3804325ca202fbd1deb2521e16255c5d 100644 --- a/code/soldier.c +++ b/code/soldier.c @@ -23,7 +23,6 @@ void init_soldier(soldier_t *soldier, int hp) soldier->DestSoldier.y = soldier->sprite.y; soldier->DestSoldier.w = SOLDIER_WIDTH; soldier->DestSoldier.h = SOLDIER_HEIGHT; - soldier->DestBullet = (SDL_Rect*) malloc(sizeof(SDL_Rect)*NB_BULLET); soldier->time_bullet = TIME_BULLET; init_bullet(soldier); } @@ -44,10 +43,10 @@ void init_bullet(soldier_t *soldier) 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; - soldier->DestBullet[i].h = BULLET_HEIGTH; + soldier->charger[i].DestBullet.x = soldier->charger[i].sprite.x; + soldier->charger[i].DestBullet.y = soldier->charger[i].sprite.y; + soldier->charger[i].DestBullet.w = BULLET_WIDTH; + soldier->charger[i].DestBullet.h = BULLET_HEIGTH; soldier->time_reload = 0; } soldier->present_bullet = 0; diff --git a/code/soldier.h b/code/soldier.h index b8e8555b7cda3ba89d53d49068abfc444a11e5a3..f4e17f70fab2a99f101bdba461693447230c7715 100644 --- a/code/soldier.h +++ b/code/soldier.h @@ -10,6 +10,7 @@ struct bullet_s{ sprite_t sprite; int shoot; char sens; + SDL_Rect DestBullet; }; /** * \brief Type qui correspond au paramètre du soldat @@ -36,7 +37,6 @@ struct soldier_s{ int time_bullet; int time_reload; int present_bullet; - SDL_Rect *DestBullet; }; /** * \brief Type qui correspond au paramètre du soldat diff --git a/code/world_data.c b/code/world_data.c index 059b72ca512fcee0ab5f68f5f81474cd26439022..57c2c80f451d9ecc3222827daa56598d907eadc2 100644 --- a/code/world_data.c +++ b/code/world_data.c @@ -84,17 +84,8 @@ void init_data(world_t *world) init_supplying(&world->supplying,1); - //world->DestBullet = malloc(sizeof(SDL_Rect)*NB_BULLET); - - //Initialisation du chargeur - //&world->charger = (bullet_t*)malloc(NB_BULLET*sizeof(bullet_t)); - //init_bullet(world); - - //On n'est pas à la fin du jeu world->score = 0; world->gameover = 0; - //Score à 0 - //world->score = 0; } @@ -129,8 +120,8 @@ void refresh_data(world_t *world) //Les balles for(int i = 0; i < NB_BULLET; i++) { - world->soldier.DestBullet[i].x = world->soldier.charger[i].sprite.x; - world->soldier.DestBullet[i].y = world->soldier.charger[i].sprite.y; + world->soldier.charger[i].DestBullet.x = world->soldier.charger[i].sprite.x; + world->soldier.charger[i].DestBullet.y = world->soldier.charger[i].sprite.y; } //Déplacements @@ -156,12 +147,6 @@ void refresh_data(world_t *world) } plane_fly(&world->supplying); - - /*enemy_walk(&world->enemy,&world->soldier); - world->enemy.DestEnemy.x = world->enemy.sprite.x; - world->enemy.DestEnemy.y = world->enemy.sprite.y; - enemy_dead(&world->enemy,&world->soldier);*/ - shootAfterE(&world->soldier); world->soldier.time_bullet++; @@ -218,8 +203,6 @@ void handle_events(SDL_Event *event,world_t *world) //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); //free(world->rounds.enemies); diff --git a/data/save.txt b/data/save.txt index d13657182d85e6217da2e6b6171f48f110f94d67..cb5613e069c6ab452acd21b7997af66a4f750cf1 100644 --- a/data/save.txt +++ b/data/save.txt @@ -8,3 +8,4 @@ 5 /Meilleur score 136 + diff --git a/resources/PlaneD.bmp b/resources/PlaneD.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8247f3c379bb8060b8f2b5ae2eb64975e7e05a2c Binary files /dev/null and b/resources/PlaneD.bmp differ diff --git a/resources/Plane.bmp b/resources/PlaneG.bmp similarity index 100% rename from resources/Plane.bmp rename to resources/PlaneG.bmp