diff --git a/travail_de_groupe/jeu_appren_par_renfo/.vscode/settings.json b/travail_de_groupe/jeu_appren_par_renfo/.vscode/settings.json new file mode 100644 index 0000000000000000000000000000000000000000..a7361b1789711920f04de454549e57ad57fb63f1 --- /dev/null +++ b/travail_de_groupe/jeu_appren_par_renfo/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "files.associations": { + "qlearn.h": "c" + } +} \ No newline at end of file diff --git a/travail_de_groupe/jeu_appren_par_renfo/Res/humanscored.png b/travail_de_groupe/jeu_appren_par_renfo/Res/humanscored.png new file mode 100644 index 0000000000000000000000000000000000000000..d8430c98d53b284bd1e9ae8b1bcbc621d3e5bf7c Binary files /dev/null and b/travail_de_groupe/jeu_appren_par_renfo/Res/humanscored.png differ diff --git a/travail_de_groupe/jeu_appren_par_renfo/Res/iascored.png b/travail_de_groupe/jeu_appren_par_renfo/Res/iascored.png new file mode 100644 index 0000000000000000000000000000000000000000..65d5538e28932bf5b48f667416635b06d964a94d Binary files /dev/null and b/travail_de_groupe/jeu_appren_par_renfo/Res/iascored.png differ diff --git a/travail_de_groupe/jeu_appren_par_renfo/Res/racket.png b/travail_de_groupe/jeu_appren_par_renfo/Res/racket.png index 0c54b73d27e8ef725f32fa8bb27f8e725e2f4e1c..9184203390362c88d6cc145d5889b3e892ab5920 100644 Binary files a/travail_de_groupe/jeu_appren_par_renfo/Res/racket.png and b/travail_de_groupe/jeu_appren_par_renfo/Res/racket.png differ diff --git a/travail_de_groupe/jeu_appren_par_renfo/Res/sky.png b/travail_de_groupe/jeu_appren_par_renfo/Res/sky.png index 1526c651f281167ff093aa7785e3b389779125d2..9ff0b7b86f9063ff498b83d6283794295507f803 100644 Binary files a/travail_de_groupe/jeu_appren_par_renfo/Res/sky.png and b/travail_de_groupe/jeu_appren_par_renfo/Res/sky.png differ diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/ball.c b/travail_de_groupe/jeu_appren_par_renfo/src/ball.c index 11d96b4ba15876b34ef0fffcf1a22469b89d07ca..db3b95a0529d986d41b369e270ff2b878c286299 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/ball.c +++ b/travail_de_groupe/jeu_appren_par_renfo/src/ball.c @@ -1,18 +1,21 @@ #include "ball.h" ball_t ball; +int whoScored; int trajectoireAntoine[NUMBERPOINT_TRAJEC][2]; void initBall() { - ball.x = (rand()%(MAP_WIDTH/2)) * BLOCK_SIZE + BLOCK_SIZE; - ball.y = (rand()% (MAP_HEIGHT - 2)) * BLOCK_SIZE + BLOCK_SIZE; + ball.x = player.x + player.w / 2; + ball.y = player.y; ball.z = player.h / BLOCK_SIZE; ball.h = 0.5 * BLOCK_SIZE; ball.w = 0.5 * BLOCK_SIZE; ball.isHit = 0; ball.angle = -pi; ball.speed = 0; + landingPointEnnemyIsFind = 0; + landingPointPlayerIsFind = 0; } //ball_t ball; int trajectoireAntoine[NUMBERPOINT_TRAJEC][2]; @@ -134,14 +137,27 @@ void updateBall() if (ball.isHit) { // landingPoint est déjà / BLOCK_SIZE de base - ball.z = lagrangeInterpolation(ball.x / BLOCK_SIZE, lastHitPoint[0] / BLOCK_SIZE, lastHitPoint[1] / BLOCK_SIZE, 15, 2 * player.h / BLOCK_SIZE, landingPoint[0], 0); + if (ball.isTravelingTo == AI){ + ball.z = lagrangeInterpolation(ball.x / BLOCK_SIZE, lastHitPointPlayerX / BLOCK_SIZE, lastHitPointPlayerY / BLOCK_SIZE, 15, 2 * player.h / BLOCK_SIZE, landingPointPlayerX, 0); + } + else if (ball.isTravelingTo == PLAYER){ + ball.z = lagrangeInterpolation(ball.x / BLOCK_SIZE, lastHitPointEnnemyX / BLOCK_SIZE, lastHitPointEnnemyY / BLOCK_SIZE, 15, 2 * ennemy.h / BLOCK_SIZE, landingPointEnnemyX, 0); + } } - - if ((int)ball.z == 0) + if (ball.z < 0) { - ball.x = 0; - ball.y = 0; + if (ball.x/BLOCK_SIZE < MAP_WIDTH/2){ + whoScored = AI; + } + else { + whoScored = PLAYER; + } ball.z = 0; ball.speed = 0; + //initBall(); + } + else { + whoScored = NONE; } + } diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/ball.h b/travail_de_groupe/jeu_appren_par_renfo/src/ball.h index fb82d4cd05dee4c0e096475de3cb6de1bcec3882..fdac7e189c41daf132f00926f3873fe0deddd992 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/ball.h +++ b/travail_de_groupe/jeu_appren_par_renfo/src/ball.h @@ -15,6 +15,7 @@ #define PLAYER 0 #define AI 1 +#define NONE 2 typedef enum { @@ -43,6 +44,7 @@ typedef struct point{ //extern ball_t ball; extern int trajectoireAntoine[NUMBERPOINT_TRAJEC][2]; +extern int whoScored; void initBall(); float defineAngle(int, int, int, int); 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 d398e3f26629d1459a2821082869f5b2b451c5df..1ecf078bc3cb02204ea14df16adccf75c70ee2f6 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/ennemy.c +++ b/travail_de_groupe/jeu_appren_par_renfo/src/ennemy.c @@ -1,5 +1,13 @@ #include "player.h" +int landingPointEnnemyX; +int landingPointEnnemyY; + +int lastHitPointEnnemyX; +int lastHitPointEnnemyY = 0; + +int landingPointEnnemyIsFind = 0; + int angleF; int angleH; int ennemyZone; @@ -22,12 +30,12 @@ void manageEnnemyMovement() { if (ball.isTravelingTo == AI) { - angleF = defineAngleF(lastHitPoint[0], lastHitPoint[1], landingPoint[0], landingPoint[1]); + angleF = defineAngleF(lastHitPointPlayerX, lastHitPointPlayerY, landingPointPlayerX, landingPointPlayerY); angleF = converterIntoAngleF(angleF); - angleH = defineAngleH(lastHitPoint[0], landingPoint[0]); + angleH = defineAngleH(lastHitPointPlayerX, landingPointPlayerX); angleH = converterIntoAngleH(angleH); ennemyZone = convertIntoZone(ennemy.x, ennemy.y); - canonZone = convertIntoZone(lastHitPoint[0], lastHitPoint[1]); + canonZone = convertIntoZone(lastHitPointPlayerX, lastHitPointPlayerY); action = takeAction(ennemy.x, ennemy.y, Q, canonZone, angleH, angleF, 1); while (ennemyHasMoved == 0) { @@ -90,7 +98,42 @@ void manageEnnemyMovement() } } -void manageEnnemy() -{ +int generatelandingPointEnnemy(){ + + int randomPointX = rand() % ((MAP_WIDTH-1)/2); + + landingPointEnnemyIsFind = 1; + landingPointPlayerIsFind = 0; + + return randomPointX; +} + + +void ennemyHitBall(){ + if (sqrt(pow(ennemy.x - ball.x, 2) + pow(ennemy.y - ball.y, 2)) / BLOCK_SIZE < HIT_RANGE) + { + if (ball.isTravelingTo == AI) + { + + //cherche et trouve point de chute, UNE SEULE FOIS! + if(landingPointEnnemyIsFind == 0){ + landingPointEnnemyX = generatelandingPointEnnemy(); + ball.isTravelingTo = PLAYER; + ball.angle = ennemy.angle; + ball.speed = 4 * HIT_FORCE; + ball.isHit = 1; + ball.z = ball.z; + lastHitPointEnnemyX = ball.x; + lastHitPointEnnemyY = player.h; + } + + } + } +} + +void manageEnnemy(){ + manageEnnemyMovement(); + + ennemyHitBall(); } \ No newline at end of file diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/ennemy.h b/travail_de_groupe/jeu_appren_par_renfo/src/ennemy.h index 660453be677e92987bb34dee561e04e36fa87d61..a4f58a2d7e941ceb86fd61491097792e57c4bd9d 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/ennemy.h +++ b/travail_de_groupe/jeu_appren_par_renfo/src/ennemy.h @@ -8,7 +8,13 @@ #include "qlearn.h" +extern int landingPointEnnemyX; +extern int landingPointEnnemyY; +extern int lastHitPointEnnemyX; +extern int lastHitPointEnnemyY; + +extern int landingPointEnnemyIsFind; void initEnnemy(); void manageEnnemy(); 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 7e2656a61fe2fc93d978cfd4d068f2585fd52c76..c8820a7125538c776f736626136d2dd47b24de46 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 -= 1; + player.viewAngle -= 0.05 * RD; } if (event.motion.yrel < 0) { - player.viewAngle += 1; + player.viewAngle += 0.05 * RD; } player.deltax = cos(player.angle); player.deltay = sin(player.angle); @@ -118,7 +118,8 @@ void gestGame() case SDLK_b: initBall(); - landingPointIsFind = 0; + landingPointPlayerIsFind = 0; + landingPointEnnemyIsFind = 0; break; default: @@ -151,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 b46f504deefb981fee874ec537284018f3e55333..fd90101074bd545467cf0dbaefe07f8c27c9e2f6 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/player.c +++ b/travail_de_groupe/jeu_appren_par_renfo/src/player.c @@ -3,9 +3,16 @@ player_t player; player_t ennemy; -int *landingPoint; -int *lastHitPoint; -int landingPointIsFind = 0; +int landingPointPlayerX; +int landingPointPlayerY = 0; + +int lastHitPointPlayerX; +int lastHitPointPlayerY; + +int rxWall, ryWall; +float distanceWall; + +int landingPointPlayerIsFind = 0; void initPlayer() { @@ -21,84 +28,65 @@ 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 *generateLandingPoint(int rxWall) +int generatelandingPointPlayer(int rxWall, float hitIntensity) { - int *landingPoint = malloc(sizeof(int) * 2); - int randomPointX = MAP_WIDTH / 2 + 1 + rand() % (rxWall / BLOCK_SIZE - (MAP_WIDTH / 2)); - int randomPointY = -1; + int randomPointX = MAP_WIDTH/2 + hitIntensity * 5; - landingPoint[0] = randomPointX; - landingPoint[1] = randomPointY / BLOCK_SIZE; - landingPointIsFind = 1; - - return landingPoint; -} + landingPointPlayerIsFind = 1; + landingPointEnnemyIsFind = 0; -int *allocLastHitPoint() -{ - int *lastHitPoint = (int *)malloc(sizeof(int) * 2); - lastHitPoint[0] = 0; - lastHitPoint[1] = 0; - return lastHitPoint; -} - -void freeIntList(int *list) -{ - if (list != NULL) - { - free(list); - } + return randomPointX; } 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); - if (rxWall > MAP_WIDTH / 2) + castSingleRay(player.angle, &distanceWall, &distanceNet, &rxWall, &ryWall, &rxNet, &ryNet); + // printf("hit\n"); + if (rxWall > MAP_WIDTH/2) { - freeIntList(lastHitPoint); - lastHitPoint = allocLastHitPoint(); + //cherche et trouve point de chute, UNE SEULE FOIS! + if(landingPointPlayerIsFind == 0){ - // cherche et trouve point de chute, UNE SEULE FOIS! - if (landingPointIsFind == 0) - { - freeIntList(landingPoint); - landingPoint = generateLandingPoint(rxWall); - } + landingPointPlayerX = generatelandingPointPlayer(rxWall, player.hitIntensity); - lastHitPoint[0] = ball.x; - lastHitPoint[1] = player.h; + lastHitPointPlayerX = ball.x; + lastHitPointPlayerY = player.h; + + ball.angle = player.angle; + ball.speed = player.hitIntensity * 5; + // ball.z = player.h; + ball.isHit = 1; + ball.isTravelingTo = AI; + + player.startHitBool = 0; + } - ball.angle = player.angle; - ball.speed = 2 * HIT_FORCE; - ball.z = player.h; - ball.isHit = 1; - ball.isTravelingTo = AI; } + // printf("valid hit\n"); + } + else + { + // printf("unvalid hit\n"); } } + //} } - void manageMovement() { // z : keys[2] : avance @@ -109,8 +97,7 @@ void manageMovement() float y_increment = (Keys[0] - Keys[2]) * player.deltay + (Keys[1] - Keys[3]) * cos(player.angle); float newpos_x = (player.x + x_increment * MOVEMENT_SPEED) / BLOCK_SIZE; float newpos_y = (player.y + y_increment * MOVEMENT_SPEED) / BLOCK_SIZE; - int widthColli = player.w / (3 * BLOCK_SIZE); - if (newpos_x > widthColli && newpos_x < MAP_WIDTH - widthColli && newpos_y > widthColli && newpos_y < MAP_HEIGHT - widthColli) + if (newpos_x >= 0 && newpos_x < MAP_WIDTH && newpos_y >= 0 && newpos_y < MAP_HEIGHT) { if (map[(int)newpos_y][(int)newpos_x] != 1) { @@ -124,4 +111,6 @@ 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 af0ca971a4fb605ec00e9cf372f9232ed12df0d7..191e3e342c2ae9b090dd6e36f92e57795c68defd 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/player.h +++ b/travail_de_groupe/jeu_appren_par_renfo/src/player.h @@ -11,8 +11,9 @@ #define ENTITIES_RIGHT 3 #define HIT_RANGE 2 -#define HIT_FORCE 10 +#define HIT_FORCE 2 #define MOVEMENT_SPEED 10 +#define MAX_HIT_TIME 3 typedef struct player { @@ -23,25 +24,34 @@ 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; extern player_t ennemy; -extern int *landingPoint; -extern int *lastHitPoint; -extern int landingPointIsFind; +extern int landingPointPlayerX; +extern int landingPointPlayerY; +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); #endif \ No newline at end of file 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 0f71a7a840f624857b66013e7401da3cc2bcf13f..cbfc06f4552bd8b609b9b17876c53e2278c2fa06 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; @@ -12,7 +14,7 @@ SDL_Rect sky; SDL_Rect ground; SDL_Rect racket; -int showHub = 0; +int showHub = 1; SDL_Texture *netTexture; SDL_Texture *netEdgeLeftTexture; @@ -23,6 +25,8 @@ SDL_Texture *ballTexture; SDL_Texture *skyTexture; SDL_Texture *groundTexture; SDL_Texture *racketTexture; +SDL_Texture *iaScoredTexture; +SDL_Texture *humanScoredTexture; int **rays; int raysListLength = 0; @@ -795,7 +799,7 @@ void drawBall() rect.x = screenDimension.w / 2 + (screenDimension.w * tan(ballAngle - player.angle)) * sqrt(3) * 0.5; rect.w = (ballWidth * screenDimension.w) / (2 * ballDistance / BLOCK_SIZE); rect.h = (ballHeight * screenDimension.h) / (2 * ballDistance / BLOCK_SIZE); - rect.y = (3 * screenDimension.h / 4 + player.viewAngle) - 2 * tan(ballViewAngle) * ballDistance; + rect.y = (2.5 * screenDimension.h / 4 + player.viewAngle) - 2 * tan(ballViewAngle) * ballDistance; destRect.x = 32 * (SDL_GetTicks() / 150 % 4); destRect.y = 0; @@ -808,22 +812,29 @@ void drawBall() void drawSkyAndGround() { - destRect.x = ((int)((player.angle + pi) * RD + player.x / BLOCK_SIZE)); - destRect.y = 0; - destRect.w = 100; - destRect.h = 128 / 2; rect.x = 0; rect.y = screenDimension.h / 2 + player.viewAngle; rect.h = screenDimension.h - rect.y; rect.w = screenDimension.w; - SDL_RenderCopy(renderer, groundTexture, &destRect, &rect); + + SDL_RenderCopy(renderer, groundTexture, NULL, &rect); + + sky.x = 0; sky.y = 0; sky.w = screenDimension.w; sky.h = screenDimension.h / 2 + player.viewAngle; + destRect.x = 500 + (((player.angle + pi) * RD + player.x / BLOCK_SIZE)); + if (player.angle > pi){ + destRect.x = 500 + (((player.angle - pi) * RD + player.x / BLOCK_SIZE)); + } + destRect.y =0; + destRect.w = 100; + destRect.h = 128; + SDL_RenderCopy(renderer, skyTexture, &destRect, &sky); SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); @@ -831,7 +842,14 @@ void drawSkyAndGround() void drawRacket() { - // todo + destRect.x = 0; + destRect.y = 0; + destRect.w = 64; + destRect.h = 32; + if (player.isHoldingClick){ + destRect.x = 64 * ((int)(player.hitIntensityTimer/100) % 4); + } + SDL_RenderCopy(renderer, racketTexture, &destRect, NULL); } void drawMap2D(int map[][MAP_WIDTH]) @@ -894,10 +912,22 @@ void drawMap2D(int map[][MAP_WIDTH]) SDL_RenderFillRect(renderer, &rect); // draw landing point - if (landingPointIsFind == 1) + if (landingPointPlayerIsFind == 1) + { + SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); + rect.x = landingPointPlayerX * CELL_SIZE; + rect.y = CELL_SIZE; + rect.h = (MAP_HEIGHT - 2) * CELL_SIZE; + rect.w = 3; + SDL_RenderFillRect(renderer, &rect); + // reset taille cellule + rect.h = CELL_SIZE; + rect.w = CELL_SIZE; + } + if (landingPointEnnemyIsFind == 1) { SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); - rect.x = landingPoint[0] * CELL_SIZE; + rect.x = landingPointEnnemyX * CELL_SIZE; rect.y = CELL_SIZE; rect.h = (MAP_HEIGHT - 2) * CELL_SIZE; rect.w = 3; @@ -930,6 +960,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]; @@ -985,6 +1025,25 @@ void drawHub() drawInfosBall(); } +void drawWhoScored(){ + switch (whoScored) + { + case NONE: + break; + + case AI: + SDL_RenderCopy(renderer, iaScoredTexture, NULL, NULL); + break; + + case PLAYER: + SDL_RenderCopy(renderer, humanScoredTexture, NULL, NULL); + break; + + default: + break; + } +} + void drawGame() { SDL_RenderClear(renderer); @@ -993,28 +1052,33 @@ 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) { drawHub(); } + drawWhoScored(); SDL_RenderPresent(renderer); } @@ -1033,6 +1097,8 @@ void mainLoop() skyTexture = loadTexture("Res/sky.png"); groundTexture = loadTexture("Res/ground.png"); racketTexture = loadTexture("Res/racket.png"); + iaScoredTexture = loadTexture("Res/iascored.png"); + humanScoredTexture = loadTexture("Res/humanscored.png"); ray1 = malloc(sizeof(int) * 2); ray2 = malloc(sizeof(int) * 2); @@ -1055,6 +1121,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 f6a2215409ecd55ef5310278554c9b07bea55bbe..85b98f2182a8593afdb1f69257b6c3aa40307129 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;