Skip to content
Snippets Groups Projects
Commit f210c005 authored by antoinemeyer5's avatar antoinemeyer5
Browse files

fix collisions ennemy

parent 55dbb8e6
No related branches found
No related tags found
No related merge requests found
...@@ -6,6 +6,8 @@ int ennemyZone; ...@@ -6,6 +6,8 @@ int ennemyZone;
int canonZone; int canonZone;
int action; int action;
int ennemyHasMoved = 0;
void initEnnemy() void initEnnemy()
{ {
ennemy.h = 2 * BLOCK_SIZE; ennemy.h = 2 * BLOCK_SIZE;
...@@ -18,7 +20,8 @@ void initEnnemy() ...@@ -18,7 +20,8 @@ void initEnnemy()
void manageEnnemyMovement() void manageEnnemyMovement()
{ {
if (ball.isTravelingTo == AI){ if (ball.isTravelingTo == AI)
{
angleF = defineAngleF(lastHitPoint[0], lastHitPoint[1], landingPoint[0], landingPoint[1]); angleF = defineAngleF(lastHitPoint[0], lastHitPoint[1], landingPoint[0], landingPoint[1]);
angleF = converterIntoAngleF(angleF); angleF = converterIntoAngleF(angleF);
angleH = defineAngleH(lastHitPoint[0], landingPoint[0]); angleH = defineAngleH(lastHitPoint[0], landingPoint[0]);
...@@ -26,30 +29,68 @@ void manageEnnemyMovement() ...@@ -26,30 +29,68 @@ void manageEnnemyMovement()
ennemyZone = convertIntoZone(ennemy.x, ennemy.y); ennemyZone = convertIntoZone(ennemy.x, ennemy.y);
canonZone = convertIntoZone(lastHitPoint[0], lastHitPoint[1]); canonZone = convertIntoZone(lastHitPoint[0], lastHitPoint[1]);
action = takeAction(ennemy.x, ennemy.y, Q, canonZone, angleH, angleF, 1); action = takeAction(ennemy.x, ennemy.y, Q, canonZone, angleH, angleF, 1);
switch (action) while (ennemyHasMoved == 0)
{ {
switch (action)
{
case BACK: case BACK:
ennemy.x += MOVEMENT_SPEED; if (ennemy.x + BLOCK_SIZE < (MAP_WIDTH-1) * BLOCK_SIZE)
{
ennemy.x += BLOCK_SIZE;
ennemyHasMoved = 1;
}
else
{
action = takeAction(ennemy.x, ennemy.y, Q, canonZone, angleH, angleF, 1);
}
break; break;
case FOWARD: case FOWARD:
ennemy.x -= MOVEMENT_SPEED; if (ennemy.x - BLOCK_SIZE > (MAP_WIDTH/2 + 1) * BLOCK_SIZE)
{
ennemy.x -= BLOCK_SIZE;
ennemyHasMoved = 1;
}
else
{
action = takeAction(ennemy.x, ennemy.y, Q, canonZone, angleH, angleF, 1);
}
break; break;
case UP: case UP:
ennemy.y -= MOVEMENT_SPEED; if (ennemy.y - BLOCK_SIZE > 1)
{
ennemy.y -= BLOCK_SIZE;
ennemyHasMoved = 1;
}
else
{
action = takeAction(ennemy.x, ennemy.y, Q, canonZone, angleH, angleF, 1);
}
break; break;
case DOWN: case DOWN:
ennemy.y += MOVEMENT_SPEED; if (ennemy.y + BLOCK_SIZE < (MAP_HEIGHT-1) * BLOCK_SIZE)
{
ennemy.y += BLOCK_SIZE;
ennemyHasMoved = 1;
}
else
{
action = takeAction(ennemy.x, ennemy.y, Q, canonZone, angleH, angleF, 1);
}
break; break;
default: default:
ennemyHasMoved = 1;
break; break;
}
} }
ennemyHasMoved = 0;
} }
} }
void manageEnnemy(){ void manageEnnemy()
{
manageEnnemyMovement(); manageEnnemyMovement();
} }
\ No newline at end of file
...@@ -83,7 +83,6 @@ void hitBall() ...@@ -83,7 +83,6 @@ void hitBall()
{ {
freeIntList(landingPoint); freeIntList(landingPoint);
landingPoint = generateLandingPoint(rxWall); landingPoint = generateLandingPoint(rxWall);
printf("landing point: x=%d; y=%d\n", landingPoint[0], landingPoint[1]);
} }
lastHitPoint[0] = ball.x; lastHitPoint[0] = ball.x;
......
...@@ -760,7 +760,6 @@ void drawEnnemy() ...@@ -760,7 +760,6 @@ void drawEnnemy()
} }
} }
int isAngleInRange(float angle, float min, float max) int isAngleInRange(float angle, float min, float max)
{ {
return ((angle >= min && angle <= max)) || ((angle >= max && angle <= min)); return ((angle >= min && angle <= max)) || ((angle >= max && angle <= min));
...@@ -884,22 +883,23 @@ void drawMap2D(int map[][MAP_WIDTH]) ...@@ -884,22 +883,23 @@ void drawMap2D(int map[][MAP_WIDTH])
// draw player // draw player
SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255); SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255);
rect.x = (player.x * CELL_SIZE) / BLOCK_SIZE - CELL_SIZE/2; rect.x = (player.x * CELL_SIZE) / BLOCK_SIZE - CELL_SIZE / 2;
rect.y = (player.y * CELL_SIZE) / BLOCK_SIZE - CELL_SIZE/2; rect.y = (player.y * CELL_SIZE) / BLOCK_SIZE - CELL_SIZE / 2;
SDL_RenderFillRect(renderer, &rect); SDL_RenderFillRect(renderer, &rect);
// draw ennemi // draw ennemi
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
rect.x = (ennemy.x * CELL_SIZE) / BLOCK_SIZE - CELL_SIZE/2; rect.x = (ennemy.x * CELL_SIZE) / BLOCK_SIZE - CELL_SIZE / 2;
rect.y = (ennemy.y * CELL_SIZE) / BLOCK_SIZE - CELL_SIZE/2; rect.y = (ennemy.y * CELL_SIZE) / BLOCK_SIZE - CELL_SIZE / 2;
SDL_RenderFillRect(renderer, &rect); SDL_RenderFillRect(renderer, &rect);
//draw landing point // draw landing point
if(landingPointIsFind == 1){ if (landingPointIsFind == 1)
{
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
rect.x = landingPoint[0] * CELL_SIZE; rect.x = landingPoint[0] * CELL_SIZE;
rect.y = CELL_SIZE; rect.y = CELL_SIZE;
rect.h = (MAP_HEIGHT-2) * CELL_SIZE; rect.h = (MAP_HEIGHT - 2) * CELL_SIZE;
rect.w = 3; rect.w = 3;
SDL_RenderFillRect(renderer, &rect); SDL_RenderFillRect(renderer, &rect);
// reset taille cellule // reset taille cellule
...@@ -909,8 +909,8 @@ void drawMap2D(int map[][MAP_WIDTH]) ...@@ -909,8 +909,8 @@ void drawMap2D(int map[][MAP_WIDTH])
// draw ball // draw ball
SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255); SDL_SetRenderDrawColor(renderer, 0, 255, 0, 255);
rect.x = (ball.x * CELL_SIZE) / BLOCK_SIZE - CELL_SIZE/2; rect.x = (ball.x * CELL_SIZE) / BLOCK_SIZE - CELL_SIZE / 2;
rect.y = (ball.y * CELL_SIZE) / BLOCK_SIZE - CELL_SIZE/2; rect.y = (ball.y * CELL_SIZE) / BLOCK_SIZE - CELL_SIZE / 2;
SDL_RenderFillRect(renderer, &rect); SDL_RenderFillRect(renderer, &rect);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment