以简短的形式,我创建了一个math.random,它将选择一个随机数,然后另一个变量将使用该数字。在使用随机数之后,math.random将选择另一个数字,这将永远持续下去。我认为使用带有math.random的for循环使它看起来像这样:
for (int i = 0; i <100; i++) {
int mRandom = (int) (Math.random() * 21 + 15);
}
然后我使用数字来改变我创建的精灵的速度和角度(整个代码用于创建精灵,所以我不会对正在使用的精灵有问题)
for (int i = mIDontKnowTimer; i == mRandom; i++) {
这里我有一个我已经创建的计时器,当该计时器等于mrandom生成的数字时,速度和角度会发生变化
int pSpeed = (int) (Math.random() * 3 + 3);
int pAngle = (int) (Math.random() * 359);
mXSpeed = pSpeed * Math.cos(pAngle);
mYSpeed = pSpeed * Math.sin(pAngle);
}
我很困惑如何使mRandom成为一个循环,因为它说第一行有一个非法的类型开始,并且它无法找到&#34; i&#34;在代码中
答案 0 :(得分:0)
我首先将Math.Random放入一个函数中并在我的主循环中调用它。
public static int randomNumberGenerator(int min, int max){
Random rand = new Random();
return rand.nextInt(max - min) +min;
}
现在在for/while
循环中调用它。
答案 1 :(得分:0)
正如所写,您的mRandom
仅在第一个for
循环的范围内有效,并且对您的第二个for
循环完全不可用。 (我说“写为”,因为我怀疑你的代码实际上看起来不像这样 - 它将无法编译。)
你的第二个循环对我来说并不是特别清楚,但看起来你正试图改变精灵的方向和速度mRandom
次? (编辑:评论确认这一点。)
您可以使用嵌套的for
循环来完成此任务:
int mRandom;
int pSpeed, pAngle;
for (int i = 0; i <100; i++) { //100 times in a row,
mRandom = (int) (Math.random() * 21 + 15); //generate a random number
for (int j = 0; j < mRandom; j++) { //count up to that random number
//and repeatedly adjust your sprite's properties
pSpeed = (int) (Math.random() * 3 + 3);
pAngle = (int) (Math.random() * 359);
mXSpeed = pSpeed * Math.cos(pAngle);
mYSpeed = pSpeed * Math.sin(pAngle);
}
}
值得注意的是,除非你在那里的某个地方重新绘制精灵,否则额外的速度和角度变化将毫无意义 - 你要多次更新这些属性但只重绘一次,所以只有最近的更改会坚持下去
答案 2 :(得分:0)
我认为您正在尝试这样做
for (int i = 0; i <100; i++) {
int mRandom = (int) (Math.random() * 21 + 15);
for (int i = mIDontKnowTimer; i == mRandom; i++) {
....
}
}
您看到的问题是您尝试在其范围之外访问mRandom变量。