Случайно сгенерированные спрайты для игры?

StackOverflow https://stackoverflow.com/questions/8350296

  •  27-10-2019
  •  | 
  •  

Вопрос

Я использую этот метод, который я создал, чтобы случайным образом создать различные спрайты, которые будут добавлены в мою сцену с помощью 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
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top