From 46ecb9c0e2734d006279d92e64f09921f1dbb87e Mon Sep 17 00:00:00 2001 From: bohan2u <@bohan2u> Date: Sun, 3 Jan 2021 13:33:52 +0100 Subject: [PATCH] Petite amelioration sur la fenetre de jeu et ajout de la touche de rechargement de l arme --- code/display.c | 13 ++++++++++++- code/display.h | 2 ++ code/main.c | 20 +------------------- code/soldier.c | 4 +++- code/world_data.c | 7 ++++++- data/save.txt | 6 +++--- 6 files changed, 27 insertions(+), 25 deletions(-) diff --git a/code/display.c b/code/display.c index 047fc52..0d12035 100644 --- a/code/display.c +++ b/code/display.c @@ -13,6 +13,18 @@ SDL_Texture* charger_image_transparente(const char* nomfichier, SDL_Renderer* re return SDL_CreateTextureFromSurface(renderer, surface); } +void init_sdl(SDL_Window **window, SDL_Renderer **renderer, int width, int height) +{ + if(0 != SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)) + { + fprintf(stderr, "Erreur initialisation de la SDL : %s", SDL_GetError()); + } + if(0 != SDL_CreateWindowAndRenderer(width, height, SDL_WINDOW_SHOWN, window, renderer)) + { + fprintf(stderr, "Erreur lors de la creation de l'image et du renderer : %s", SDL_GetError()); + } +} + void refresh_graphics(SDL_Renderer *renderer, world_t *world,resources_t *resources) { @@ -94,7 +106,6 @@ void refresh_graphics(SDL_Renderer *renderer, world_t *world,resources_t *resour { if (world->rounds.enemies[i].sprite.is_visible == 1) { - load_texture_enemies(resources, renderer, world, i); if (world->rounds.enemies[i].direction == 1) { load_texture_run_right_enemy(resources, renderer, &world->rounds.enemies[i]); diff --git a/code/display.h b/code/display.h index 33b2742..678cbe2 100644 --- a/code/display.h +++ b/code/display.h @@ -45,6 +45,8 @@ struct resources_s typedef struct resources_s resources_t; +void init_sdl(SDL_Window **window, SDL_Renderer **renderer, int width, int height); + SDL_Texture* charger_image(const char* nomfichier, SDL_Renderer* renderer); SDL_Texture* charger_image_transparente(const char* nomfichier, SDL_Renderer* renderer, Uint8 r, Uint8 g, Uint8 b); diff --git a/code/main.c b/code/main.c index 5a3f1fd..be054d3 100644 --- a/code/main.c +++ b/code/main.c @@ -11,6 +11,7 @@ void init(SDL_Window **window, SDL_Renderer ** renderer, resources_t *resources, world_t * world) { + init_sdl(window,renderer,SCREEN_WIDTH,SCREEN_HEIGHT); init_data(world); init_ttf(); init_ressources(*renderer,resources,world); @@ -27,25 +28,6 @@ int main(void) double time; // Initialisation de la SDL - if(SDL_Init(SDL_INIT_VIDEO) < 0) - { - printf("Erreur d’initialisation de la SDL: %s",SDL_GetError()); - SDL_Quit(); - return EXIT_FAILURE; - } - - // Créer la fenêtre - window = SDL_CreateWindow("Fenetre SDL",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_RESIZABLE); - - // En cas d’erreur - if(window == NULL) - { - printf("Erreur de la creation d’une fenetre: %s",SDL_GetError()); - SDL_Quit(); - return EXIT_FAILURE; - } - - renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);; //Initialiser les données du monde et les ressources d'affichage init(&window,&renderer,&resources,&world); diff --git a/code/soldier.c b/code/soldier.c index a8cc6ae..5510594 100644 --- a/code/soldier.c +++ b/code/soldier.c @@ -146,7 +146,9 @@ void shootAfterE(soldier_t *soldier){ } //print_sprite(&soldier->charger[i].sprite); //printf("balle restantes : %d\n",soldier->present_bullet); - } + }else{ + set_invisible(&soldier->charger[i].sprite); + } } //printf("balle presente : %d\n",soldier->present_bullet); if(soldier->present_bullet == 30 && soldier->charger[NB_BULLET-1].shoot == 1){ diff --git a/code/world_data.c b/code/world_data.c index 2fd8667..88d7836 100644 --- a/code/world_data.c +++ b/code/world_data.c @@ -119,7 +119,7 @@ void refresh_data(world_t *world) world->rounds.enemies[i].DestEnemy.y = world->rounds.enemies[i].sprite.y; //Si l'ennemi touche le soldat //enemy_touch_soldier(&world->rounds.enemies[i],&world->soldier,&world->score); - enemy_touch_soldier(&world->rounds.enemies[i],&world->soldier); + //enemy_touch_soldier(&world->rounds.enemies[i],&world->soldier); enemy_dead(&world->rounds.enemies[i],&world->soldier,&world->score); } } @@ -256,6 +256,11 @@ void handle_events(SDL_Event *event,world_t *world) if(world->soldier.state_jump == 0) shoot(&world->soldier); } + if(event->key.keysym.sym == SDLK_r && world->soldier.sprite.is_visible == 1) + { + world->soldier.present_bullet = 30; + world->soldier.charger[NB_BULLET-1].shoot = 1; + } } if(event->type == SDL_KEYUP) diff --git a/data/save.txt b/data/save.txt index d86b631..73fed25 100644 --- a/data/save.txt +++ b/data/save.txt @@ -1,10 +1,10 @@ /Vie du joueur au début -1 +10 /Nombre d'ennemis au début -18 +22 /Nombre d'ennemis en plus à chaque manche 1 /Numéro de la manche -30 +34 /Meilleur score 78 -- GitLab