我正在做一个小练习,我必须初始化一个以随机速度在屏幕上移动的球对象数组。当它们相互碰撞时,我需要球反转速度。问题是我只能将每个球与自己进行比较,以便它们不断“相交”并来回晃动。我很好地感觉问题出在下面的 if 语句中,因为我将 balls[i] 与 balls[i] 进行比较,其中“i”同时是相同的数字。当我通过 intersect 函数传递 balls[i] 时,我需要将每个元素与除自身之外的所有其他元素进行比较。我尝试了几种方法,但它们没有用,而且是多余的。
//draw()中的for循环
for(int i = 0; i < balls.length; i++){
//balls[i].drawBalls();
//balls[i].moveBalls();
***if (balls[i].intersect(balls[i])) {
balls[i].moveIntersectingBalls();
}***
}
//球相交方法
boolean intersect(Ball b) {
float distance = dist(bXpos,bYpos,b.bXpos,b.bYpos);
if (distance < bRadius + b.bRadius) {
return true;
} else {
return false;
}
}
//如果相交方法球移动
void moveIntersectingBalls(){
bXspd *= -1;
bYspd *= -1;
}