Pregunta

Estoy usando este método que creé para crear aleatoriamente diferentes sprites para agregar a mi escena 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);







            }

Lo que estoy haciendo es generar aleatoriamente los números 1 - 6. y probar cada vez para ver qué número se genera y luego agrego el sprite correcto de acuerdo con el número.

Entonces, el problema es ... ya que esto es para un proyecto de juego que usa AndEngine. Quiero generar aleatoriamente elementos de bonificación que se generan aleatoriamente pero que no se generan con tanta frecuencia como los sprites anteriores. Esto solo debería suceder en una vez que se agregan cada pocos 100 sprites que se agregan.

¿Hay una mejor manera de hacer esto? ¿Como una clase creada solo para este propósito?

¿O estoy en el camino correcto? ¡Cualquier ayuda será muy apreciada!

¿Fue útil?

Solución

Probablemente deberías usar un switch declaración en lugar de anidada if-statements Para verificar qué artículo desea.

Puede implementar la oportunidad de eliminar elementos generados aleatorios adicionales cada uno x Porcentaje Si también desea, en lugar de ponerle un contador duro (por ejemplo, cada 100), considere algo como esto:

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
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top