随机生成的游戏精灵



我使用这个方法创建随机创建不同的精灵添加到我使用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。我希望随机生成奖励道具,但不像上面的精灵那样频繁生成。这应该只发生在每添加100个精灵中。

有更好的方法去做这件事吗?就像为此目的而创建的类一样?

还是我在正确的轨道上?任何帮助将非常感谢!

您可能应该使用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
}

最新更新