1 回答
TA贡献1801条经验 获得超8个赞
result它们之所以相同是因为您只在初始化时为其分配一次值,并且永远不会更改它。如果你想让它改变,你需要使用你的 Random 来分配另一个值。
random.nextInt(highRange -lowRange) + 1如果您想要一个介于lowRange和之间的随机数,那么您的公式是不正确的highRange。这给你一个介于lowRange + 1和之间的数字highRange + 1。正确的公式是random.nextInt(highRange - lowRange) + lowRange.
解决这个问题的方法是为每个存储随机整数的气泡创建一个附加变量。您已经为已存储的两个变量(x 和 y)分别保留了一个列表。理论上您可以添加第三个,但实际上您只需要为每个气泡创建一个类,因此如果添加更多功能,您可以轻松扩展它。
class Bubble {
int x;
int y;
int textureIndex;
}
然后将两个数组列表替换为:
ArrayList<Bubble> bubbles = new ArrayList<>();
你的makeBubble方法应该是这样的:
void makeBubble(){
Bubble bubble = new Bubble();
bubble.x = (int)(random.nextFloat() * Gdx.graphics.getWidth());
bubble.y = Gdx.graphics.getHeight();
bubble.textureIndex = random.nextInt(3);
}
用于绘制它们的 for 循环将如下所示。我在这里将纹理数组名称更改为bubbleTextures可bubbles用于气泡对象列表。
for (Bubble bubble : bubbles) {
batch.draw(bubbleTextures[bubble.textureIndex], bubble.x, bubble.y);
bubble.y -= 4;
}
我在您的代码中发现了许多其他问题,但我认为解释所有这些问题将是令人难以承受的。这至少能让你朝着正确的方向前进。
添加回答
举报