为什么我的数组会为每个变量保持相同的数字?

时间:2012-08-27 05:18:10

标签: android arrays for-loop iterator libgdx

我有一个for循环,它循环显示一个矩形数组。对于添加到数组中的每个新矩形,都会在其上绘制一个精灵。我希望在矩形顶部绘制的每个精灵都有自己的变量来改变精灵绘图。虽然在屏幕上大多数每个矩形都应该有一个不同的精灵----------------------------------- - 我无法弄清楚如何为每个精灵赋予自己的变量,而不是给所有其他精灵提供相同的精灵。此代码最终在每个矩形上绘制新的相同sprite。这是我到目前为止所拥有的......

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

3 个答案:

答案 0 :(得分:0)

错误是:

arrayplace++;  

您过早地增加arrayplace,因此它指向您添加的值后面的索引。

答案 1 :(得分:-1)

随机生成器的工作方式,它们根据“种子”值生成一系列数字。给出相同的种子,系列中的第一个数字将是相同的。你正确使用你的随机功能吗?很可能你传递给随机方法的“10”的值是种子。你需要调用其他函数给你下一个随机数吗?检查随机功能文档。这是Java随机文档:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Random.html#Random(long)请参阅构造函数和方法next()或nextInt()

的种子参数的用法

更进一步,我认为每次进入循环时都需要将“种子”更改为随机生成器,而不是使用常量10。

答案 2 :(得分:-1)

我猜你得到相同随机数的原因是你在每个循环中初始化类。所以,你生成的第一个数字每次都是相同的。

  • 尝试在for-loop之外初始化MathUtils对象

    MathUtils m = new MathUtils();
    
  • 在循环内部,使用此行生成一个数字:

    PointlessRect.x = m.random(10);
    

希望这会起作用