Я использую этот метод, который я создал для случайного создания разных спрайтов, которые будут добавлены в мою сцену с помощью 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 спрайтов.
Есть ли лучший способ сделать это? Как класс, созданный именно для этой цели?
Или я на правильном пути? Любая помощь будет очень воспринята!
Вероятно, вы должны использовать оператор 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
}