【发布时间】:2018-02-15 21:59:56
【问题描述】:
我知道存在一些与此类似的问题,但是我的代码略有不同,我觉得它快完成了我只需要稍作调整,但我不确定到底是什么。
我的目标是在 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 语句,它将不会创建球,从而导致比用户指定的球少。
我尝试添加 i--;到 if 语句的内容,但这不起作用,并且在这种情况下,球似乎生成不正确。
谢谢:)
【问题讨论】:
-
发生这种情况是因为 i(索引)仍在增加,要么增加数量,要么将其更改为 while 循环(最好更改)