質問

私はこの方法を使用して、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を生成し、毎回テストしてどの数値が生成されているかを確認し、数字に従って正しいスプライトを追加します。

そのため、これはAndengineを使用したゲームプロジェクトのためであるためです。ランダムに生成されますが、上記のスプライトほど頻繁に生成されないボーナスアイテムをランダムに生成したいと思います。これは、追加された100個のスプライトごとに1回だけ発生するはずです。

これを行うためのより良い方法はありますか?この目的のためだけに作成されたクラスのように?

それとも私は正しい軌道に乗っていますか?どんな助けも大いに評価されます!

役に立ちましたか?

解決

おそらく使用する必要があります 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
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top