我知道存在一些与此问题类似的问题,但是我的代码略有不同,我觉得它快要完成了,我只需要稍作调整,但是我不确定到底是什么。
我的目标是在900x600画布上生成圆圈,而不会使其最初发生碰撞。球的数量由用户指定,最多100个。
到目前为止,我的方法:
startCounter = 8;
balls = new ArrayList<>();
for (int i = 0; i < amount; i++) {
diameter = random.nextInt(30) + 10 + diameterRange; //generate diameter value for ball
startCounter += diameter + 25; //stop balls from spawning on top of each other
BouncingBall ball = makeBall(startCounter, diameter, i);
if (Physics.Collision(ball, balls)
|| ball.getXPosition() > 850 || ball.getYPosition() > 550)
{
continue; //avoid starting collisions
}
balls.add(ball);
}
当前,这几乎可以完美地工作,除了如果if语句失败,它不会创建球,导致球的数量少于用户指定的数量。
我试图加我-;到if语句的内容,但这是行不通的,在这种情况下,球似乎产生不正确。
谢谢:)
最佳答案
将其更改为while循环,即:
startCounter = 8;
balls = new ArrayList<>();
int goodBalls=0;
while (goodBalls<amount){
diameter = random.nextInt(30) + 10 + diameterRange;//generate diameter value for ball
startCounter += diameter + 25;//stop balls from spawning on top of eachother
BouncingBall ball = makeBall(startCounter, diameter, i);
if !(Physics.Collision(ball, balls)||ball.getXPosition()>850||ball.getYPosition()>550){//avoid starting collisions
balls.add(ball);
goodBalls++;
}
}
关于java - 球的随机起始位置,避免碰撞,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46091684/