java - 为游戏随机生成 Sprite ?

标签 java android andengine

我正在使用我创建的这种方法来随机创建不同的 Sprite ,以使用 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。每次测试生成的是哪个数字,然后根据数字添加正确的 Sprite 。

所以问题是..因为这是一个使用AndEngine的游戏项目。我想随机生成随机生成但不像上面的 Sprite 那样频繁生成的奖励项目。这应该只会在每添加 100 个 Sprite 时发生一次。

有没有更好的方法来做到这一点?就像为此目的创建的类?

或者我走在正确的轨道上?任何帮助将不胜感激!

最佳答案

您可能应该使用 switch 语句而不是嵌套的 if 语句 来检查您想要的项目。

如果你愿意,你也可以实现每 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
}

关于java - 为游戏随机生成 Sprite ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8350296/

相关文章:

java - Spring Boot RESTful API 的各层设计及其实体映射

java - 如何在java中编写单元测试来加载文件

android - 将 RayCasting 用于 2D 游戏

java - Andengine:区分 OnAreaTouched 和 OnSceneTouched

java - 是否可以从父类型调用子静态方法?

android - Android 中的多屏幕 xml

Android HttpUrlConnection POSTing an image - 内容长度应该指什么?

android - 如何让场景更新处理程序在 Action 启动时中断 (AndEngine)?

android - Andengine如何制作粒子效果?

java - log4j2 中的死锁(使用 JBoss)