Casualmente generato sprite per un gioco?
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!
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
}