From 0d465f0244fba40cc072a942551a89d5af3387b7 Mon Sep 17 00:00:00 2001 From: belkhiritaha <belkhiri.taha53@gmail.com> Date: Thu, 23 Jun 2022 16:13:17 +0200 Subject: [PATCH] ecran de fin fonctionnel --- .../chef_oeuvre/src/gest_event.c | 58 ++++++++++++++++++- travail_de_groupe/chef_oeuvre/src/player.c | 5 ++ travail_de_groupe/chef_oeuvre/src/player.h | 1 + travail_de_groupe/chef_oeuvre/src/render.c | 20 ++++++- travail_de_groupe/chef_oeuvre/src/render.h | 2 + 5 files changed, 83 insertions(+), 3 deletions(-) diff --git a/travail_de_groupe/chef_oeuvre/src/gest_event.c b/travail_de_groupe/chef_oeuvre/src/gest_event.c index 63661ab..3be92ab 100644 --- a/travail_de_groupe/chef_oeuvre/src/gest_event.c +++ b/travail_de_groupe/chef_oeuvre/src/gest_event.c @@ -56,6 +56,62 @@ void manageMenu(){ SDL_Delay(5); } +void manageLost(){ + SDL_Event event; + while (SDL_PollEvent(&event)){ + switch(event.type) + { + case SDL_QUIT: + running = 0; + break; + + case SDL_KEYUP: + switch (event.key.keysym.sym) + { + case SDLK_ESCAPE: + running = 0; + continue; + + default: + continue; + } + break; + + case SDL_KEYDOWN: + switch (event.key.keysym.sym) + { + case SDLK_ESCAPE: + running = 0; + continue; + + default: + continue; + } + break; + + case SDL_MOUSEMOTION: + mousePosition.x = event.motion.x; + mousePosition.y = event.motion.y; + continue; + + + case SDL_MOUSEBUTTONDOWN: + if (SDL_PointInRect(&mousePosition, &playAgainButtonRect)){ + initAll(); + gameState = GAME; + } + if (SDL_PointInRect(&mousePosition, &quitButtonRect)){ + running = 0; + } + break; + + default: + continue; + } + } + SDL_Delay(5); +} + void manageGame(){ SDL_Event event; while (SDL_PollEvent(&event)){ @@ -148,7 +204,7 @@ void *eventLoop(void *arg){ switch(gameState){ case MENU : manageMenu();break; case GAME : manageGame();break; - case LOSE : manageMenu();break; + case LOSE : manageLost();break; default:printf("game state fault");break; } } diff --git a/travail_de_groupe/chef_oeuvre/src/player.c b/travail_de_groupe/chef_oeuvre/src/player.c index b1d7b73..5143e87 100644 --- a/travail_de_groupe/chef_oeuvre/src/player.c +++ b/travail_de_groupe/chef_oeuvre/src/player.c @@ -207,4 +207,9 @@ void updatePlayer(){ manageMovement(); } +void initAll(){ + initFire(); + initPlayer(); +} + diff --git a/travail_de_groupe/chef_oeuvre/src/player.h b/travail_de_groupe/chef_oeuvre/src/player.h index 7bcdbb8..31e3e59 100644 --- a/travail_de_groupe/chef_oeuvre/src/player.h +++ b/travail_de_groupe/chef_oeuvre/src/player.h @@ -35,5 +35,6 @@ void pourWater(int, int); void fillWater(int, int); int giveCaseBelowPosition(int, int); void updatePlayer(); +void initAll(); #endif \ No newline at end of file diff --git a/travail_de_groupe/chef_oeuvre/src/render.c b/travail_de_groupe/chef_oeuvre/src/render.c index 5b680ac..d554aec 100644 --- a/travail_de_groupe/chef_oeuvre/src/render.c +++ b/travail_de_groupe/chef_oeuvre/src/render.c @@ -10,6 +10,8 @@ TTF_Font *robotoFont; SDL_DisplayMode screenDimension; SDL_Rect buttonRect; +SDL_Rect playAgainButtonRect; +SDL_Rect quitButtonRect; SDL_Surface * grassSurface; SDL_Texture * grassTexture; @@ -329,8 +331,9 @@ void drawLost(){ rect.x = 0; rect.y = 0; SDL_RenderCopy(renderer, backgroundLostTexture, NULL, &rect); - SDL_RenderCopy(renderer, playAgainButtonTexture, NULL, &rect); - SDL_RenderCopy(renderer, quitButtonTexture, NULL, &rect); + SDL_RenderCopy(renderer, playAgainButtonHoverTexture, NULL, &rect); + SDL_RenderCopy(renderer, quitButtonHoverTexture, NULL, &rect); + SDL_RenderCopy(renderer, playAgainButtonHoverTexture, NULL, &rect); SDL_RenderPresent(renderer); } @@ -380,6 +383,9 @@ void mainLoop(){ playAgainButtonSurface = IMG_Load("Res/buttonPlayAgain.png"); playAgainButtonTexture = SDL_CreateTextureFromSurface(renderer, playAgainButtonSurface); + playAgainButtonHoverSurface = IMG_Load("Res/buttonPlayAgainHover.png"); + playAgainButtonHoverTexture = SDL_CreateTextureFromSurface(renderer, playAgainButtonHoverSurface); + fireSurface = IMG_Load("Res/fire_spritesheet.png"); fireTexture = SDL_CreateTextureFromSurface(renderer, fireSurface); @@ -415,7 +421,17 @@ void mainLoop(){ SDL_FreeSurface(playAgainButtonSurface); SDL_FreeSurface(quitButtonSurface); SDL_FreeSurface(quitButtonHoverSurface); + SDL_FreeSurface(playAgainButtonHoverSurface); + + playAgainButtonRect.x = (screenDimension.w * 700)/1920; + playAgainButtonRect.y = (screenDimension.h * 615)/1080; + playAgainButtonRect.w = (screenDimension.w * 400)/1920; + playAgainButtonRect.h = (screenDimension.h * 130)/1080; + quitButtonRect.x = playAgainButtonRect.x; + quitButtonRect.w = playAgainButtonRect.w; + quitButtonRect.y = (screenDimension.h * 887)/1080; + quitButtonRect.h = playAgainButtonRect.h; unsigned int a = SDL_GetTicks(); unsigned int b = SDL_GetTicks(); diff --git a/travail_de_groupe/chef_oeuvre/src/render.h b/travail_de_groupe/chef_oeuvre/src/render.h index e48f649..a66e4e7 100644 --- a/travail_de_groupe/chef_oeuvre/src/render.h +++ b/travail_de_groupe/chef_oeuvre/src/render.h @@ -12,6 +12,8 @@ extern SDL_Window *window; extern SDL_Renderer *renderer; extern SDL_DisplayMode screenDimension; extern SDL_Rect buttonRect; +extern SDL_Rect playAgainButtonRect; +extern SDL_Rect quitButtonRect; extern float timer; void drawHover(int x, int y); -- GitLab