From 29c9763037da76aab2330953c26d3b541bba5b40 Mon Sep 17 00:00:00 2001 From: belkhiritaha <belkhiri.taha53@gmail.com> Date: Thu, 30 Jun 2022 20:07:20 +0200 Subject: [PATCH] =?UTF-8?q?speed=20+=20longueure=20du=20tir=20variable=20e?= =?UTF-8?q?n=20fct=20de=20la=20dur=C3=A9e=20du=20click?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeu_appren_par_renfo/src/ennemy.c | 2 +- .../jeu_appren_par_renfo/src/gest_event.c | 21 ++++++++--------- .../jeu_appren_par_renfo/src/player.c | 23 ++++++++++--------- .../jeu_appren_par_renfo/src/player.h | 14 +++++++---- .../jeu_appren_par_renfo/src/render.c | 21 +++++++++++++++-- .../jeu_appren_par_renfo/src/render.h | 3 +-- 6 files changed, 53 insertions(+), 31 deletions(-) diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/ennemy.c b/travail_de_groupe/jeu_appren_par_renfo/src/ennemy.c index f0f2c1f..123e432 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/ennemy.c +++ b/travail_de_groupe/jeu_appren_par_renfo/src/ennemy.c @@ -131,7 +131,7 @@ void ennemyHitBall(){ } void manageEnnemy(){ - if (SDL_GetTicks() % 1000 < 200) + if (SDL_GetTicks() % 1000 < 20) { manageEnnemyMovement(); } diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.c b/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.c index a63f419..c8820a7 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.c +++ b/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.c @@ -68,11 +68,11 @@ void gestGame() } if (event.motion.yrel > 0) { - player.viewAngle -= 0.01 * RD; + player.viewAngle -= 0.05 * RD; } if (event.motion.yrel < 0) { - player.viewAngle += 0.01 * RD; + player.viewAngle += 0.05 * RD; } player.deltax = cos(player.angle); player.deltay = sin(player.angle); @@ -152,21 +152,20 @@ void gestGame() case SDL_MOUSEBUTTONDOWN: if (event.button.button == SDL_BUTTON_LEFT) { - if (player.isHitting) - { - player.isHitting = 0; - } - else - { - player.isHitting = 1; - } + player.isHoldingClick = 1; + player.startHitTimer = timer; + player.startHitBool = 0; } break; case SDL_MOUSEBUTTONUP: + if (event.button.button == SDL_BUTTON_LEFT) { - player.isHitting = 0; + player.endHitTimer = timer; + player.startHitBool = 1; + player.hitIntensity = (player.endHitTimer - player.startHitTimer) / 200; + player.isHoldingClick = 0; } break; diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/player.c b/travail_de_groupe/jeu_appren_par_renfo/src/player.c index 2f5fad8..73f57b8 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/player.c +++ b/travail_de_groupe/jeu_appren_par_renfo/src/player.c @@ -9,6 +9,9 @@ int landingPointPlayerY = 0; int lastHitPointPlayerX; int lastHitPointPlayerY; +int rxWall, ryWall; +float distanceWall; + int landingPointPlayerIsFind = 0; void initPlayer() @@ -25,19 +28,16 @@ void initPlayer() ennemy.angle = -pi; player.speed = 100; player.isMoving = 0; - player.HPMax = 3; - player.currentHP = player.HPMax; - player.coins = 0; player.angle = 0; player.deltax = 1; player.deltay = 0; player.viewAngle = 0; } -int generatelandingPointPlayer(int rxWall) +int generatelandingPointPlayer(int rxWall, float hitIntensity) { - int randomPointX = MAP_WIDTH/2 + 1 + rand()%(rxWall/BLOCK_SIZE - (MAP_WIDTH/2)); + int randomPointX = MAP_WIDTH/2 + hitIntensity * 5; landingPointPlayerIsFind = 1; landingPointEnnemyIsFind = 0; @@ -49,12 +49,10 @@ void hitBall() { if (sqrt(pow(player.x - ball.x, 2) + pow(player.y - ball.y, 2)) / BLOCK_SIZE < HIT_RANGE) { - int rxWall, ryWall; - float distanceWall; int rxNet, ryNet; float distanceNet; - if (player.isHitting) + if (player.startHitBool) { castSingleRay(player.angle, &distanceWall, &distanceNet, &rxWall, &ryWall, &rxNet, &ryNet); // printf("hit\n"); @@ -64,16 +62,18 @@ void hitBall() //cherche et trouve point de chute, UNE SEULE FOIS! if(landingPointPlayerIsFind == 0){ - landingPointPlayerX = generatelandingPointPlayer(rxWall); - + landingPointPlayerX = generatelandingPointPlayer(rxWall, player.hitIntensity); + lastHitPointPlayerX = ball.x; lastHitPointPlayerY = player.h; ball.angle = player.angle; - ball.speed = HIT_FORCE; + ball.speed = player.hitIntensity * 5; ball.z = player.h; ball.isHit = 1; ball.isTravelingTo = AI; + + player.startHitBool = 0; } } @@ -112,4 +112,5 @@ void managePlayer() manageMovement(); hitBall(); updateBall(); + player.hitIntensityTimer = timer - player.startHitTimer; } \ No newline at end of file diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/player.h b/travail_de_groupe/jeu_appren_par_renfo/src/player.h index 50c18b7..191e3e3 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/player.h +++ b/travail_de_groupe/jeu_appren_par_renfo/src/player.h @@ -13,6 +13,7 @@ #define HIT_RANGE 2 #define HIT_FORCE 2 #define MOVEMENT_SPEED 10 +#define MAX_HIT_TIME 3 typedef struct player { @@ -23,16 +24,18 @@ typedef struct player int w; int speed; int isMoving; - int isHitting; + int startHitBool; int isHit; int direction; - int HPMax; - int currentHP; - int coins; float angle; float deltax; float deltay; float viewAngle; + float startHitTimer; + float endHitTimer; + float hitIntensity; + float hitIntensityTimer; + int isHoldingClick; } player_t; extern player_t player; @@ -44,6 +47,9 @@ extern int lastHitPointPlayerX; extern int lastHitPointPlayerY; extern int landingPointPlayerIsFind; +extern int rxWall; + +int generatelandingPointPlayer(int rxWall, float hitIntensity); void initPlayer(); void managePlayer(); void freeIntList(int *list); diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/render.c b/travail_de_groupe/jeu_appren_par_renfo/src/render.c index c1809ce..0561eba 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/render.c +++ b/travail_de_groupe/jeu_appren_par_renfo/src/render.c @@ -1,5 +1,7 @@ #include "render.h" +float timer = 0; + SDL_Window *window; SDL_Renderer *renderer; @@ -942,6 +944,16 @@ void drawString(char *str, int x, int y, int w, int h, int r, int g, int b, int SDL_DestroyTexture(texture); } +void drawHitIntensity(){ + SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); + rect.w = screenDimension.w/20; + rect.x = screenDimension.w - rect.w; + //printf("%f\n", player.hitIntensityTimer); + rect.h = 2 * screenDimension.h/2 * ( player.hitIntensityTimer/1000); + rect.y = 3 * screenDimension.h/4 - rect.h; + SDL_RenderFillRect(renderer, &rect); +} + void drawFPS() { char str[10]; @@ -1005,22 +1017,26 @@ void drawGame() if (ball.x < MAP_WIDTH * BLOCK_SIZE / 2) { drawVerticalWalls(); - drawEnnemy(); drawHorizentalWalls(); + drawEnnemy(); drawVerticalNet(); drawBall(); } else { drawVerticalWalls(); - drawEnnemy(); drawHorizentalWalls(); + drawEnnemy(); // todo bonus : draw point de chute de la balle drawBall(); drawVerticalNet(); } drawMap2D(map); drawRacket(); + if (player.isHoldingClick){ + + drawHitIntensity(); + } drawFPS(); // affiche le hub if (showHub) @@ -1067,6 +1083,7 @@ void mainLoop() if (delta > 1000 / FPS_TO_GET) { fps = 1000 / delta; + timer += delta; b = a; switch (game_state) { diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/render.h b/travail_de_groupe/jeu_appren_par_renfo/src/render.h index f6a2215..85b98f2 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/render.h +++ b/travail_de_groupe/jeu_appren_par_renfo/src/render.h @@ -35,8 +35,7 @@ extern SDL_Window *window; extern SDL_Renderer *renderer; extern SDL_DisplayMode screenDimension; -extern int *ray1; -extern int *ray2; +extern float timer; extern int showHub; -- GitLab