第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么我的隨機(jī)數(shù)組沒(méi)有在每次渲染上繪制隨機(jī)紋理?我必須改變什么?

為什么我的隨機(jī)數(shù)組沒(méi)有在每次渲染上繪制隨機(jī)紋理?我必須改變什么?

呼如林 2023-08-16 10:06:40
在開(kāi)始之前我想聲明我正在學(xué)習(xí),我是全新的。在這里我添加了盡可能多的細(xì)節(jié)。所以,我有一組不同顏色的紋理,并設(shè)置一個(gè) Random 來(lái)隨機(jī)化紋理,如下所示:Texture[] bubbles;Random random = new Random(); int lowRange = 0;int highRange = 3;int result = random.nextInt(highRange -lowRange) + 1; //my randomArrayList<Integer> BubbleXs = new ArrayList<>();ArrayList<Integer> BubbleYs = new ArrayList<>();@Override public void create () {bubbles = new Texture[4];bubbles[0] = new Texture("blue.png");bubbles[1] = new Texture("red.png");bubbles[2] = new Texture("green.png");bubbles[3] = new Texture("yellow.png");}然后,我繼續(xù)使用 for 循環(huán)以從屏幕頂部掉落的隨機(jī)顏色繪制紋理,如下所示:@Overridepublic void render () {    if (BubbleCount < 120) {        BubbleCount++;    } else {        BubbleCount = 0;        makeBubble();    }public void makeBubble () {    float width = random.nextFloat() * Gdx.graphics.getWidth();    BubbleXs.add((int)width);    BubbleYs.add(Gdx.graphics.getHeight());}for (int i=0; i < BubbleYs.size(); i++) {    batch.draw(bubbles[result],  BubbleXs.get(i), BubbleYs.get(i));     BubbleYs.set(i, BubbleYs.get(i) -4);}它完美地隨機(jī)繪制紋理,但只有一次,當(dāng)它創(chuàng)建時(shí),我希望它們每次循環(huán)時(shí)都是一個(gè)新的隨機(jī),所以每次掉落時(shí)都是不同的。為什么它不這樣做?我缺少什么?
查看完整描述

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)。


查看完整回答
反對(duì) 回復(fù) 2023-08-16
  • 1 回答
  • 0 關(guān)注
  • 111 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)