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

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. И каждый раз проверяя, какое число сгенерировано, а затем добавляю правильный спрайт в соответствии с numbER.

Итак, проблема в том, что... Поскольку это для игрового проекта с использованием AndEngine. Я хочу случайным образом генерировать бонусные предметы, которые генерируются случайным образом, но не генерируются так часто, как спрайты выше. Это должно происходить только через каждые несколько 100 спрайтов.

Есть ли лучший способ сделать это? Как класс, созданный именно для этой цели?

Или я на правильном пути? Любая помощь будет очень воспринята!

Теги:
andengine

1 ответ

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, поэтому вам придется указывать каждый случай там. Если вы работаете с небольшим диапазоном чисел, при переключении код выглядит чище; но для вероятностных вещей, таких как «случайные» предметы, будет гораздо проще использовать операторы if.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню