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;
}
我在您的代碼中發現了許多其他問題,但我認為解釋所有這些問題將是令人難以承受的。這至少能讓你朝著正確的方向前進。
添加回答
舉報