diff --git a/travail_de_groupe/chef_oeuvre/Res/background_sides.png b/travail_de_groupe/chef_oeuvre/Res/background_sides.png index bbbb3a44de2425f13ef2a06314555364c814facf..52040cfbd1c62249c3d593a4939a0b438da81a8e 100755 Binary files a/travail_de_groupe/chef_oeuvre/Res/background_sides.png and b/travail_de_groupe/chef_oeuvre/Res/background_sides.png differ diff --git a/travail_de_groupe/chef_oeuvre/Res/empty_bucket.png b/travail_de_groupe/chef_oeuvre/Res/empty_bucket.png new file mode 100755 index 0000000000000000000000000000000000000000..a883dbc437bdfbacc65fde9c2693edc92708db26 Binary files /dev/null and b/travail_de_groupe/chef_oeuvre/Res/empty_bucket.png differ diff --git a/travail_de_groupe/chef_oeuvre/Res/filled_bucket.png b/travail_de_groupe/chef_oeuvre/Res/filled_bucket.png new file mode 100755 index 0000000000000000000000000000000000000000..74c9e04dabe9c9f58e819d3d34b10f3b46bf9c1f Binary files /dev/null and b/travail_de_groupe/chef_oeuvre/Res/filled_bucket.png differ diff --git a/travail_de_groupe/chef_oeuvre/Res/water.png b/travail_de_groupe/chef_oeuvre/Res/water.png new file mode 100755 index 0000000000000000000000000000000000000000..a96e17c7999fbc681be91279a454b647505fa8ea Binary files /dev/null and b/travail_de_groupe/chef_oeuvre/Res/water.png differ diff --git a/travail_de_groupe/chef_oeuvre/chef_oeuvre.odt b/travail_de_groupe/chef_oeuvre/chef_oeuvre.odt index 77ef2ff06ae6d7eb9e0f79c95727dd094f699c95..be89ba4f6298e709c64f98ccc8d6db6f0d61adb1 100644 Binary files a/travail_de_groupe/chef_oeuvre/chef_oeuvre.odt and b/travail_de_groupe/chef_oeuvre/chef_oeuvre.odt differ diff --git a/travail_de_groupe/chef_oeuvre/map.txt b/travail_de_groupe/chef_oeuvre/map.txt index cfd451b26db099bb036f41da76b8a9cb238c16d2..febf0b99c84c26d15b22aecde8e795d01cce47ea 100644 --- a/travail_de_groupe/chef_oeuvre/map.txt +++ b/travail_de_groupe/chef_oeuvre/map.txt @@ -15,6 +15,6 @@ 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 \ No newline at end of file +2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 +2 2 2 2 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 \ No newline at end of file diff --git a/travail_de_groupe/chef_oeuvre/src/gest_event.c b/travail_de_groupe/chef_oeuvre/src/gest_event.c index 7ea08e5402d367b665fc24bd8125efb4c354196d..caad8317dca7bb341842856eba8c5e14dff9a70a 100644 --- a/travail_de_groupe/chef_oeuvre/src/gest_event.c +++ b/travail_de_groupe/chef_oeuvre/src/gest_event.c @@ -123,10 +123,14 @@ void manageGame(){ break; case SDL_MOUSEMOTION: - mousePosition.x = (event.motion.x - (screenDimension.w - (MAPSIZE * CELLSIZE)) / 2) / CELLSIZE; - mousePosition.y = (event.motion.y - 0) / CELLSIZE; + mousePosition.x = (event.motion.x - (screenDimension.w - (MAPSIZE * CELLSIZE)) / 2) / CELLSIZE; + mousePosition.y = (event.motion.y - 0) / CELLSIZE; continue; + case SDL_MOUSEBUTTONDOWN: + pourWater(mousePosition.x, mousePosition.y); + break; + default: continue; } diff --git a/travail_de_groupe/chef_oeuvre/src/player.c b/travail_de_groupe/chef_oeuvre/src/player.c index 09106266f5eab936922d592ba96df555976809bd..cc5135b7b723da9287fb87cca4890714b0933639 100644 --- a/travail_de_groupe/chef_oeuvre/src/player.c +++ b/travail_de_groupe/chef_oeuvre/src/player.c @@ -4,11 +4,12 @@ player_t player; void initPlayer(){ - player.x = 18*32; - player.y = 0; + player.x = (MAPSIZE/2)*CELLSIZE; + player.y = (MAPSIZE/2)*CELLSIZE; player.w = CELLSIZE*0.8; player.h = CELLSIZE*0.8; - player.waterLevel = 0; + player.waterMax = 3; + player.currentWater = player.waterMax; player.speed = 1; player.isMoving = 0; } @@ -134,5 +135,15 @@ int selectStateHover(){ } +void pourWater(int x, int y){ + int onFire = searchFire(fireList, x, y); + if(player.currentWater>0){ + //downgrade the cliqued fire + if(onFire == 1 && selectStateHover() == 1){ + fireList = deleteFire (fireList, x, y); + } + player.currentWater = player.currentWater - 1; + } +} diff --git a/travail_de_groupe/chef_oeuvre/src/player.h b/travail_de_groupe/chef_oeuvre/src/player.h index 8dda417ec6b48cac57240a0dc79a26c8748e4575..a8bcffb7d67bb15d6dfa6feaa4b19ef23b0a90f1 100644 --- a/travail_de_groupe/chef_oeuvre/src/player.h +++ b/travail_de_groupe/chef_oeuvre/src/player.h @@ -14,7 +14,8 @@ typedef struct player{ int y; int w; int h; - int waterLevel; + int currentWater; + int waterMax; int speed; int isMoving; } player_t; @@ -24,5 +25,6 @@ extern player_t player; void initPlayer(); void manageMovement(); int selectStateHover(); +void pourWater(int, int); #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 2a4389c824bbafc9eda81397a8e3f90c55b51891..6963c387011b4ab9569146a1369da5f84f35faf8 100644 --- a/travail_de_groupe/chef_oeuvre/src/render.c +++ b/travail_de_groupe/chef_oeuvre/src/render.c @@ -38,6 +38,15 @@ SDL_Texture * playButtonHoverTexture; SDL_Surface * fireSurface; SDL_Texture * fireTexture; +SDL_Surface * waterSurface; +SDL_Texture * waterTexture; + +SDL_Surface * emptyBucketSurface; +SDL_Texture * emptyBucketTexture; + +SDL_Surface * filledBucketSurface; +SDL_Texture * filledBucketTexture; + void createWindow(){ if (SDL_Init(SDL_INIT_VIDEO) != 0){ @@ -111,8 +120,13 @@ void drawMap(){ for(i = 0; i < MAPSIZE; i++){ for(j = 0; j < MAPSIZE; j++){ SDL_RenderCopy(renderer, grassTexture, NULL, &rect); - if(map[i][j] == 1){ - SDL_RenderCopy(renderer, treeTexture, NULL, &rect); + switch (map[i][j]){ + case 1: + SDL_RenderCopy(renderer, treeTexture, NULL, &rect); + break; + case 2: + SDL_RenderCopy(renderer, waterTexture, NULL, &rect); + break; } if (mousePosition.x == j && mousePosition.y == i){ if (selectStateHover()){ @@ -162,12 +176,32 @@ void drawFire(){ } } +void drawPlayerWaterLevel(){ + int borderWidth = (screenDimension.w - (MAPSIZE * CELLSIZE)) / 2; + SDL_Rect rect; + rect.h = borderWidth/player.waterMax; + rect.w = borderWidth/player.waterMax; + int count = player.currentWater; + for (int i=0; i<player.waterMax; i++){ + rect.x = (i*rect.h); + rect.y = screenDimension.h/3; + if (count){ + count--; + SDL_RenderCopy(renderer, filledBucketTexture, NULL, &rect); + } + else { + SDL_RenderCopy(renderer, emptyBucketTexture, NULL, &rect); + } + } +} + void drawGame(){ SDL_RenderClear(renderer); drawBackgroundSides(); drawMap(); drawPlayer(); drawFire(); + drawPlayerWaterLevel(); SDL_RenderPresent(renderer); } @@ -205,6 +239,15 @@ void mainLoop(){ fireSurface = IMG_Load("Res/fire.png"); fireTexture = SDL_CreateTextureFromSurface(renderer, fireSurface); + waterSurface = IMG_Load("Res/water.png"); + waterTexture = SDL_CreateTextureFromSurface(renderer, waterSurface); + + emptyBucketSurface = IMG_Load("Res/empty_bucket.png"); + emptyBucketTexture = SDL_CreateTextureFromSurface(renderer, emptyBucketSurface); + + filledBucketSurface = IMG_Load("Res/filled_bucket.png"); + filledBucketTexture = SDL_CreateTextureFromSurface(renderer, filledBucketSurface); + SDL_FreeSurface(grassSurface); SDL_FreeSurface(treeSurface); SDL_FreeSurface(hoverSurface); @@ -215,6 +258,7 @@ void mainLoop(){ SDL_FreeSurface(backgroundSidesSurface); SDL_FreeSurface(noHoverSurface); SDL_FreeSurface(fireSurface); + SDL_FreeSurface(waterSurface); unsigned int a = SDL_GetTicks(); unsigned int b = SDL_GetTicks();