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 5f55c79f7c6582236401ca59d93993076f54521b..27b27f7a92e77811cf5bb3bd9dbc87087c251a1a 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/player.c +++ b/travail_de_groupe/jeu_appren_par_renfo/src/player.c @@ -40,7 +40,7 @@ void initPlayer(){ int * generateLandingPoint(){ int * landingPoint = malloc(sizeof(int) * 2); - int randomLength = rand() % (int)(MAP_WIDTH*BLOCK_SIZE - player.x); + int randomLength = rand() % (int)((MAP_WIDTH/2)*BLOCK_SIZE) + (MAP_WIDTH/2)*BLOCK_SIZE; int randomPointX = randomLength * cos(player.angle) + player.x; int randomPointY = randomLength * sin(player.angle) + player.y; landingPoint[0] = randomPointX/BLOCK_SIZE; @@ -50,7 +50,7 @@ int * generateLandingPoint(){ } int * allocLastHitPoint(){ - int * lastHitPoint = malloc(sizeof(int) * 2); + int * lastHitPoint = (int *)malloc(sizeof(int) * 2); lastHitPoint[0] = 0; lastHitPoint[1] = 0; return lastHitPoint; @@ -73,16 +73,16 @@ void hitBall(){ if (sqrt(pow(player.x - ball.x, 2) + pow(player.y - ball.y, 2))/BLOCK_SIZE < HIT_RANGE){ if (currAngle < angleMax && currAngle > angleMin){ //printf("hit\n"); - freeIntList(landingPoint); - freeIntList(lastHitPoint); - lastHitPoint = allocLastHitPoint(); - landingPoint = generateLandingPoint(); if (player.isHitting){ - lastHitPoint[0] = player.x; + freeIntList(landingPoint); + freeIntList(lastHitPoint); + lastHitPoint = allocLastHitPoint(); + landingPoint = generateLandingPoint(); + lastHitPoint[0] = ball.x; lastHitPoint[1] = player.h; - ball.x = player.x; + /*ball.x = player.x; ball.y = player.y; - ball.z = player.h; + ball.z = player.h;*/ ball.angle = player.angle; ball.speed = HIT_FORCE; ball.isHit = 1; @@ -100,9 +100,22 @@ void updateBall(){ ball.x = ball.x + ball.speed * cos(ball.angle); ball.y = ball.y + ball.speed * sin(ball.angle); if (ball.isHit){ - ball.z = lagrangeInterpolation(ball.x, lastHitPoint[0], lastHitPoint[1], 15 , 2*player.h, landingPoint[0], 0); + // 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.z > 0){ + printf("param. lagrange : xp=%f, xd=%d, yd=%d, xf=%d, yf=%d, xt=%d, yt=%d\n", + ball.x/BLOCK_SIZE, + lastHitPoint[0]/BLOCK_SIZE, + lastHitPoint[1]/BLOCK_SIZE, + 15, + 2*player.h/BLOCK_SIZE, + landingPoint[0], + 0 + ); + printf("ballZ: %f\n", ball.z); + } + } - //printf("ball position: %f %f %f\n", ball.x/BLOCK_SIZE, ball.y/BLOCK_SIZE, ball.z); } 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 3953a8f602e8649ae9397c59c37114296fe0d9a3..d41e8de5543d1941dcb9d576eda3efb7c2aacf5e 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/render.c +++ b/travail_de_groupe/jeu_appren_par_renfo/src/render.c @@ -451,7 +451,7 @@ void drawEnnemy(){ if (angleSum > 2*pi) angleSum -= 2*pi; if (angleSum < 0) angleSum += 2*pi; - printf("sum: %f\n", angleSum * RD); + //printf("sum: %f\n", angleSum * RD); if (angleSum > 5*pi/3 && angleSum <= pi/3){ destRect.x = 2 * destRect.w; @@ -486,8 +486,8 @@ void drawBall(){ float angleMax = player.angle + (FOV_ANGLE)/2 * DR; - printf("ball angle: %f player angle: %f\n", ballAngle * RD, player.angle * RD); - printf("limit angles: %f %f\n", angleMin, angleMax); + //printf("ball angle: %f player angle: %f\n", ballAngle * RD, player.angle * RD); + //printf("limit angles: %f %f\n", angleMin, angleMax); if (ballAngle >= angleMin && ballAngle <= angleMax){ rect.x = screenDimension.w/2 + (screenDimension.w * tan(ballAngle - player.angle)) * sqrt(3) * 0.5; rect.w = (ballWidth * screenDimension.w) / (ballDistance/BLOCK_SIZE); @@ -572,6 +572,46 @@ void drawFPS(){ drawString(str, screenDimension.w - 50, 0, 50, 50, 255, 255, 255, 255); } +void drawInfosPlayer(){ + char str_x_player[10]; + char str_y_player[10]; + char str_z_player[10]; + char str_playerX[20] = "playerX:"; + char str_playerY[20] = "playerY:"; + char str_playerZ[20] = "playerZ:"; + + sprintf(str_x_player, "%d", (int)player.x); + strcat(str_playerX, str_x_player); + sprintf(str_y_player, "%d", (int)player.y); + strcat(str_playerY, str_y_player); + sprintf(str_z_player, "%d", (int)player.z); + strcat(str_playerZ, str_z_player); + + drawString(str_playerX, screenDimension.w - 120, 50, 100, 50, 255, 255, 255, 255); + drawString(str_playerY, screenDimension.w - 120, 100, 100, 50, 255, 255, 255, 255); + drawString(str_playerZ, screenDimension.w - 120, 150, 100, 50, 255, 255, 255, 255); +} + +void drawInfosBall(){ + char str_x_ball[10]; + char str_y_ball[10]; + char str_z_ball[10]; + char str_ballX[20] = "ballX/BS:"; + char str_ballY[20] = "ballY:"; + char str_ballZ[20] = "ballZ:"; + + sprintf(str_x_ball, "%d", (int)ball.x/BLOCK_SIZE); + strcat(str_ballX, str_x_ball); + sprintf(str_y_ball, "%d", (int)ball.y); + strcat(str_ballY, str_y_ball); + sprintf(str_z_ball, "%d", (int)ball.z); + strcat(str_ballZ, str_z_ball); + + drawString(str_ballX, screenDimension.w - 120, 200, 100, 50, 255, 255, 255, 255); + drawString(str_ballY, screenDimension.w - 120, 250, 100, 50, 255, 255, 255, 255); + drawString(str_ballZ, screenDimension.w - 120, 300, 100, 50, 255, 255, 255, 255); +} + void drawGame(){ SDL_RenderClear(renderer); drawSkyAndGround(); @@ -582,6 +622,8 @@ void drawGame(){ drawBall(); drawMap2D(map); drawFPS(); + drawInfosPlayer(); + drawInfosBall(); SDL_RenderPresent(renderer); }