Domanda

Sto usando questo metodo che ho creato per creare in modo casuale diversi sprite da aggiungere alla mia scena usando 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);







            }

Quello che sto facendo è a caso la generazione di numeri 1 -. 6. E test ogni volta per vedere quale numero viene generato e poi aggiungo lo sprite corretto in base al numero

Quindi il problema is..Since questo è per un progetto di gioco usando AndEngine. Voglio generare casualmente oggetti bonus che vengono generati in modo casuale, ma non hanno generato tutte le volte che gli sprite sopra. Questo dovrebbe accadere solo dentro come una volta ogni pochi 100 sprite che vengono aggiunti.

C'è un modo migliore per andare a fare questo? Come una classe creata proprio per questo scopo?

o sono io sulla strada giusta? Qualsiasi aiuto sarà molto apprecciated!

È stato utile?

Soluzione

Si dovrebbe probabilmente utilizzare un'istruzione switch piuttosto che if-statements nidificato per verificare quali voce che si desidera.

È possibile implementare la possibilità di rilasciare ulteriori elementi generati casuali ogni percentuali x se si vuole entrava, piuttosto che mettere un hard-counter su di essa (ad esempio ogni 100), prendere in considerazione qualcosa di simile:

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
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top