Frage

Ich verwende diese Methode, die ich erstellt habe, um zufällig verschiedene Sprites zu erstellen, um meine Szene mit Andengine hinzuzufügen.

 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);







            }

Was ich tue, ist, die Zahlen 1 - 6 nach dem Zufallsprinzip zu generieren und jedes Mal zu testen, um festzustellen, welche Nummer generiert wird, und dann füge ich das richtige Sprite gemäß der Zahl hinzu.

Das Problem ist also ... da dies für ein Spielprojekt mit Andengine ist. Ich möchte zufällig Bonuselemente generieren, die zufällig generiert, aber nicht so oft generiert werden wie die oben genannten Sprites. Dies sollte nur in einmal alle paar 100 Sprites, die hinzugefügt werden, passieren.

Gibt es einen besseren Weg, dies zu tun? Wie eine Klasse, die nur für diesen Zweck erstellt wurde?

Oder bin ich auf dem richtigen Weg? Jede Hilfe wird sehr geschätzt!

War es hilfreich?

Lösung

Sie sollten wahrscheinlich a verwenden switch Aussage eher als verschachtelt if-statements Um zu überprüfen, welchen Artikel Sie möchten.

Sie können die Chance implementieren, zusätzliche zufällige erzeugte Elemente abzugeben x Prozentsatz, wenn Sie es auch wünschen, anstatt einen hartnäckigen Ablauf darauf zu setzen (z. B. alle 100), sollten Sie so etwas in Betracht ziehen:

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
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top