# Thread: Pong Clone Collision Allegro

1. ## Pong Clone Collision Allegro

Hi

I've been learning some 'Allegro' (a game programming library) for c++. i decided to compile what i'd learned and to try and make a pong clone called 'bat and ball'. ive run into a problem that i have been un-able to fix. when i run this code everything works as it should but the colision on the bat to ball doesn't work. please help:

Code:
```#include <allegro.h>
#include <cstdlib>

int BallX = 100;
int BallY = 100;

int TempX = 100;
int TempY = 100;

int Dir = 1; //This will keep track of the circles direction
//1= up and left, 2 = down and left, 3 = up and right, 4 = down and right

int PlayerX = 300;
int PlayerY = 400;

int TempPlayerX = 300;
int TempPlayerY = 400;

void MovePlayer(){

TempPlayerX = PlayerX;
TempPlayerY = PlayerY;

if (key[KEY_LEFT] && PlayerX > 10) {
PlayerX = PlayerX - 5;
}
else if (key[KEY_RIGHT] && PlayerX < 570) {
PlayerX = PlayerX + 5;
}
acquire_screen();
rectfill( screen, TempPlayerX, TempPlayerY, (TempPlayerX + 50), (TempPlayerY + 20), makecol ( 0, 0, 0));
rectfill( screen, PlayerX, PlayerY, (PlayerX + 50), (PlayerY + 20), makecol ( 255, 255, 255));
release_screen();

}

void MoveBall(){

TempX = BallX;
TempY = BallY;

if (Dir == 1 && BallX != 10 && BallY != 20 && (BallX < PlayerX || BallX > PlayerX + 50)) {

BallX = BallX - 1;
BallY = BallY - 1;

} else if (Dir == 2 && BallX != 20 && BallY != 460) {

BallX = BallX - 1;
BallY = BallY + 1;

} else if (Dir == 3 && BallX != 620 && BallY != 20)  {

BallX = BallX + 1;
BallY = BallY - 1;

} else if (Dir == 4 && BallX != 620 && BallY != 460) {

BallX = BallX + 1;
BallY = BallY + 1;

} else if ((BallX > PlayerX || BallX < (PlayerX + 50)) && BallY == 395) {

BallY = BallY - 5;
Dir = rand() % 4 + 1;

}

else {
Dir = rand() % 4 + 1;
}

acquire_screen();
circlefill ( screen, TempX, TempY, 5, makecol( 0, 0, 0));
circlefill ( screen, BallX, BallY, 5, makecol( 255, 255, 255));
release_screen();

rest(10);

}

int main(){

allegro_init();
install_keyboard();
set_color_depth(16);
set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0);

while( !key[KEY_ESC]){

MoveBall();
MovePlayer();

}

return 0;

}
END_OF_MAIN();```