2011-12-02 205 views
1

我正在使用我創建的這種方法來隨機創建不同的精靈,使用andEngine將其添加到我的場景中。爲遊戲隨機生成的精靈?

Random randItem = new Random(); 



    face = null; 
    float x = rand.nextInt((int) mCamera.getWidth() - mBallTextureRegion.getHeight()); 
     int ItemNumber = randFruit.nextInt(6) + 1; 

     if(ItemNumber == 1){ 
      face = new Sprite(x,0, this.mBallTextureRegion); 


     }else if(ItemNumber == 2){ 


      face = new Sprite(x,0,this.strawberryTextureRegion); 

     }else if(ItemNumber == 3){ 

      face = new Sprite(x,0,this.grapeTextureRegion); 

      }else if(ItemNumber == 4){ 
       face = new Sprite(x,0, this.watermelonRegion); 

      }else if(ItemNumber == 5){ 
       face = new Sprite(x,0, this.cherryRegion); 


      }else if(ItemNumber == 6){ 
       Sprite poison = new Sprite(x,0,this.poisionRegion); 







      } 

我在做什麼是隨機生成的數字1 - 6而每一次看到的是產生哪個號碼測試,然後我根據數量添加正確的子畫面。

所以問題是..因爲這是一個使用AndEngine的遊戲項目。我想隨機生成獎勵物品,這些物品是隨機生成的,但並不像上面的精靈那樣頻繁生成。這應該只發生在每增加幾百個精靈一次的情況下。

有沒有更好的方式去做這件事?就像爲此創建的課程一樣?

還是我在正確的軌道上?任何幫助將大大得到讚賞!

回答

2

您應該使用switch而不是嵌套if-statements來檢查您想要的項目。

您可以實現一定機率掉落額外的隨機生成的項目每x百分比,如果你想藏漢,而不是把硬櫃檯上(例如,每100),可以考慮這樣的事情:

int itemNumber = randFruit.nextInt(6) + 1; 

switch(itemNumber) { 
    case 1: 
     //Item 1 code 
     break; 
    case 2: 
     //Item 2 code 
     break; 
    //etc. . . 
} 

//Generate random number from 1 - 100 
int randomItem = (int)(Math.Random()*100); 

if (randomItem >= 90 && <= 100) { 
    //Generate your item 
} 
+0

我喜歡你的建議很多。我從來沒有想過爲此使用switch語句。所以在隨機生成的1 - 100.這將看到switch語句的內部?至於案件。我怎麼能有隨機獎勵點,不容易產生背靠背或一個接一個? –

+0

您可以使用隨機生成的1 - 100的開關,但請記住,Java不支持switch語句中的範圍,因此您必須將每個case放在那裏。如果您使用的是小範圍的數字,開關會使代碼看起來更清晰;但對於諸如「隨機」項等概率事件,使用if語句會更容易。 – Deco

+0

所以如果我想隨機添加一個獎勵物品到場景..但隨機..我不希望它隨機添加到4可能被添加到背靠背的點。 –