Skip to content
Snippets Groups Projects
Commit d2994d2f authored by belkhiritaha's avatar belkhiritaha
Browse files

modifications du systeme de hit de balle

parent 6fb83aa2
Branches
No related tags found
No related merge requests found
{
"files.associations": {
"qlearn.h": "c"
}
}
\ No newline at end of file
......@@ -13,6 +13,8 @@ void initBall()
ball.isHit = 0;
ball.angle = -pi;
ball.speed = 0;
landingPointEnnemyIsFind = 0;
landingPointPlayerIsFind = 0;
}
//ball_t ball;
int trajectoireAntoine[NUMBERPOINT_TRAJEC][2];
......@@ -134,7 +136,12 @@ 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 (ball.z < 0)
{
......
#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,38 +98,38 @@ void manageEnnemyMovement()
}
}
int * generateLandingPointEnnemy(){
int *landingPoint = malloc(sizeof(int) * 2);
int generatelandingPointEnnemy(){
int randomPointX = rand() % ((MAP_WIDTH/2));
landingPoint[0] = randomPointX ;
landingPoint[1] = 0;
landingPointIsFind = 1;
landingPointEnnemyIsFind = 1;
landingPointPlayerIsFind = 0;
return landingPoint;
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)
{
if(landingPointIsFind == 0){
freeIntList(landingPoint);
landingPoint = generateLandingPointEnnemy();
}
//cherche et trouve point de chute, UNE SEULE FOIS!
if(landingPointEnnemyIsFind == 0){
landingPointEnnemyX = generatelandingPointEnnemy();
ball.isTravelingTo = PLAYER;
ball.angle = ennemy.angle;
ball.speed = HIT_FORCE;
ball.isHit = 1;
lastHitPoint[0] = ball.x;
lastHitPoint[1] = player.h;
lastHitPointEnnemyX = ball.x;
lastHitPointEnnemyY = player.h;
printf("ennemy new lastHitPointEnnemy : %d %d\n", lastHitPointEnnemyX/BLOCK_SIZE, lastHitPointEnnemyY/BLOCK_SIZE);
printf("ennemy new lastHitPoint : %d %d\n", lastHitPoint[0]/BLOCK_SIZE, lastHitPoint[1]/BLOCK_SIZE);
printf("ennemy new landingPointEnnemy : %d %d\n", landingPointEnnemyX/BLOCK_SIZE, landingPointEnnemyY/BLOCK_SIZE);
}
printf("ennemy new landingPoint : %d %d\n", landingPoint[0]/BLOCK_SIZE, landingPoint[1]/BLOCK_SIZE);
}
}
}
......
......@@ -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();
......
......@@ -68,11 +68,11 @@ void gestGame()
}
if (event.motion.yrel > 0)
{
player.viewAngle -= 1;
player.viewAngle -= 0.01 * RD;
}
if (event.motion.yrel < 0)
{
player.viewAngle += 1;
player.viewAngle += 0.01 * 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:
......
......@@ -3,9 +3,13 @@
player_t player;
player_t ennemy;
int *landingPoint;
int *lastHitPoint;
int landingPointIsFind = 0;
int landingPointPlayerX;
int landingPointPlayerY = 0;
int lastHitPointPlayerX;
int lastHitPointPlayerY;
int landingPointPlayerIsFind = 0;
void initPlayer()
{
......@@ -30,33 +34,15 @@ void initPlayer()
player.viewAngle = 0;
}
int *generateLandingPoint(int rxWall)
int generatelandingPointPlayer(int rxWall)
{
int *landingPoint = malloc(sizeof(int) * 2);
int randomPointX = MAP_WIDTH/2 + 1 + rand()%(rxWall/BLOCK_SIZE - (MAP_WIDTH/2));
landingPoint[0] = randomPointX ;
landingPoint[1] = 0;
landingPointIsFind = 1;
landingPointPlayerIsFind = 1;
landingPointEnnemyIsFind = 0;
return landingPoint;
}
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()
......@@ -75,27 +61,25 @@ void hitBall()
if (rxWall > MAP_WIDTH/2)
{
freeIntList(lastHitPoint);
lastHitPoint = allocLastHitPoint();
//cherche et trouve point de chute, UNE SEULE FOIS!
if(landingPointIsFind == 0){
freeIntList(landingPoint);
landingPoint = generateLandingPoint(rxWall);
}
if(landingPointPlayerIsFind == 0){
landingPointPlayerX = generatelandingPointPlayer(rxWall);
lastHitPoint[0] = ball.x;
lastHitPoint[1] = player.h;
printf("player new lastHitPointPlayer : %d %d\n", lastHitPointPlayerX/BLOCK_SIZE, lastHitPointPlayerY/BLOCK_SIZE);
printf("player new landingPointPlayer : %d %d\n", landingPointPlayerX/BLOCK_SIZE, landingPointPlayerY/BLOCK_SIZE);
lastHitPointPlayerX = ball.x;
lastHitPointPlayerY = player.h;
ball.angle = player.angle;
ball.speed = HIT_FORCE;
ball.z = player.h;
ball.isHit = 1;
ball.isTravelingTo = AI;
}
printf("ennemy new lastHitPoint : %d %d\n", lastHitPoint[0]/BLOCK_SIZE, lastHitPoint[1]/BLOCK_SIZE);
printf("ennemy new landingPoint : %d %d\n", landingPoint[0]/BLOCK_SIZE, landingPoint[1]/BLOCK_SIZE);
}
// printf("valid hit\n");
}
......
......@@ -37,9 +37,12 @@ typedef struct player
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;
void initPlayer();
void managePlayer();
......
......@@ -894,10 +894,10 @@ 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 = landingPoint[0] * CELL_SIZE;
rect.x = landingPointPlayerX * CELL_SIZE;
rect.y = CELL_SIZE;
rect.h = (MAP_HEIGHT - 2) * CELL_SIZE;
rect.w = 3;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment