Untitled
unknown
plain_text
a year ago
2.4 kB
7
Indexable
float cornerdistance(int x1, int y1, int x2, int y2){
float distance=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))+5;
return distance;
}
float linedistance(int x1, int y1, int x2, int y2, int c1, int c2){
if(x1==x2){
return abs(c1-x1)+5;
}
if(y1==y2){
return abs(c2-y1)+5;
}
//float m=(y1-y2)/(x1-x2);
//return abs(m*c1-c2+(y1-m*x1))/sqrt(m*m +1);
}
void checkcollision() {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (bricks[i][j].show == 1) {
if (ballx >= bricks[i][j].x && ballx <= bricks[i][j].x + bricks[i][j].width) {
if (linedistance(bricks[i][j].x, bricks[i][j].y, bricks[i][j].x + bricks[i][j].width, bricks[i][j].y, ballx, bally) <= radiusball ||
linedistance(bricks[i][j].x, bricks[i][j].y + bricks[i][j].height, bricks[i][j].x + bricks[i][j].width, bricks[i][j].y + bricks[i][j].height, ballx, bally) <= radiusball) {
dy *= -1;
bricks[i][j].show = 0;
return;
}
} else if (bally >= bricks[i][j].y && bally <= bricks[i][j].y + bricks[i][j].height) {
if (linedistance(bricks[i][j].x, bricks[i][j].y, bricks[i][j].x, bricks[i][j].y + bricks[i][j].height, ballx, bally) <= radiusball ||
linedistance(bricks[i][j].x + bricks[i][j].width, bricks[i][j].y, bricks[i][j].x + bricks[i][j].width, bricks[i][j].y + bricks[i][j].height, ballx, bally) <= radiusball) {
dx *= -1;
bricks[i][j].show = 0;
return;
}
}
if (cornerdistance(bricks[i][j].x, bricks[i][j].y, ballx, bally) <= radiusball ||
cornerdistance(bricks[i][j].x + bricks[i][j].width, bricks[i][j].y, ballx, bally) <= radiusball ||
cornerdistance(bricks[i][j].x + bricks[i][j].width, bricks[i][j].y + bricks[i][j].height, ballx, bally) <= radiusball ||
cornerdistance(bricks[i][j].x, bricks[i][j].y + bricks[i][j].height, ballx, bally) <= radiusball) {
dx *= -1;
dy *= -1;
bricks[i][j].show = 0;
return;
}
}
}
}
}Editor is loading...
Leave a Comment