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