1

表示される四角形の配列をループする for ループがあります。配列に追加された新しい長方形ごとに、その上にスプライトが描画されます。四角形の上に描画される各スプライトに、スプライトの描画を変更する独自の変数を持たせたいと考えています。画面上では、ほとんどすべての長方形に異なるスプライトが描画されているはずです ----------------------------------- -他のすべてのスプライトに同じ変数を与えずに、各スプライトに独自の変数を与える方法がわかりません。このコードは、すべての長方形に新しい同じスプライトを描画することになります。これが私がこれまでに持っているものです..

  int arrayplace = 0;

 for(Rectangle  rain: rectangleArray) { 

    numberArray.add(arrayPlace, MathUtils.random(3);
    //adds a variable to a certain spot on the array
    // picks random# within range given
    arrayplace++;           

          if (numberArray.get(arrayPlace)==1){
              spritebatch.draw(spriteOne, rain.x, rain.y);
          };
          if (numberArray.get(arrayPlace)==2){
              spritebatch.draw(spriteTwo, rain.x, rain.y);
          }
          if (numberArray.get(arrayPlace)==3){
              spritebatch.draw(spriteThree, rain.x, rain.y);
          }
  }
4

3 に答える 3

0

間違いは次のとおりです。

arrayplace++;  

インクリメントarrayplaceが早すぎるため、追加した値の背後にあるインデックスを指しています。

于 2013-12-09T23:23:53.290 に答える
-1

乱数発生器が機能する方法は、「シード」値に基づいて一連の数値を生成します。シリーズの最初の数は、同じシードを指定すると同じになります。ランダム関数を正しく使用していますか? 最も可能性が高いのは、random メソッドに渡す "10" の値がシードです。次の乱数を得るために他の関数を呼び出す必要がありますか? ランダム関数のドキュメントを確認してください。Java ランダム ドキュメントは次のとおりです: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Random.html#Random(long )メソッド next() または nextInt() に

さらに、定数 10 を使用する代わりに、ループに入るたびに「シード」を乱数発生器に変更する必要があると思います。

于 2012-08-27T05:34:49.653 に答える
-1

同じ乱数を取得している理由は、各ループでクラスを初期化しているためだと思います。したがって、毎回同じになる最初の数値を生成しています。

  • for-loop の外でMathUtils オブジェクトを初期化してみてください:

    MathUtils m = new MathUtils();
    
  • ループ内で、次の行を使用して数値を生成します。

    PointlessRect.x = m.random(10);
    

これがうまくいくことを願っています

于 2012-08-27T05:42:27.857 に答える