Случайно генерируемые спрайты для игры? - PullRequest
1 голос
/ 02 декабря 2011

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

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

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

1 Ответ

2 голосов
/ 02 декабря 2011

Вы, вероятно, должны использовать оператор 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
}
...