1 回答

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊
result它們之所以相同是因?yàn)槟辉诔跏蓟瘯r(shí)為其分配一次值,并且永遠(yuǎn)不會(huì)更改它。如果你想讓它改變,你需要使用你的 Random 來(lái)分配另一個(gè)值。
random.nextInt(highRange -lowRange) + 1如果您想要一個(gè)介于lowRange和之間的隨機(jī)數(shù),那么您的公式是不正確的highRange。這給你一個(gè)介于lowRange + 1和之間的數(shù)字highRange + 1。正確的公式是random.nextInt(highRange - lowRange) + lowRange.
解決這個(gè)問(wèn)題的方法是為每個(gè)存儲(chǔ)隨機(jī)整數(shù)的氣泡創(chuàng)建一個(gè)附加變量。您已經(jīng)為已存儲(chǔ)的兩個(gè)變量(x 和 y)分別保留了一個(gè)列表。理論上您可以添加第三個(gè),但實(shí)際上您只需要為每個(gè)氣泡創(chuàng)建一個(gè)類(lèi),因此如果添加更多功能,您可以輕松擴(kuò)展它。
class Bubble {
int x;
int y;
int textureIndex;
}
然后將兩個(gè)數(shù)組列表替換為:
ArrayList<Bubble> bubbles = new ArrayList<>();
你的makeBubble方法應(yīng)該是這樣的:
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 循環(huán)將如下所示。我在這里將紋理數(shù)組名稱(chēng)更改為bubbleTextures可bubbles用于氣泡對(duì)象列表。
for (Bubble bubble : bubbles) {
batch.draw(bubbleTextures[bubble.textureIndex], bubble.x, bubble.y);
bubble.y -= 4;
}
我在您的代碼中發(fā)現(xiàn)了許多其他問(wèn)題,但我認(rèn)為解釋所有這些問(wèn)題將是令人難以承受的。這至少能讓你朝著正確的方向前進(jìn)。
添加回答
舉報(bào)