Untitled
unknown
plain_text
4 months ago
2.4 kB
2
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