[英]How to make a math.random into a for loop
简而言之,我创建了一个 math.random,它将选择一个随机数,然后另一个变量将使用该数字。 在使用 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 成为循环感到困惑,因为它说第一行的类型开头非法并且在代码中找不到“i”
我首先将 Math.Random 放入一个函数中并在我的主循环中调用它。
public static int randomNumberGenerator(int min, int max){
Random rand = new Random();
return rand.nextInt(max - min) +min;
}
现在在for/while
循环中调用它。
正如所写,您的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);
}
}
值得注意的是,除非你在那里的某个地方重绘你的精灵,否则额外的速度和角度变化将毫无意义——你多次更新这些属性但只重绘一次,所以只有最近的更改才会生效。
我认为你正在尝试这样做
for (int i = 0; i <100; i++) {
int mRandom = (int) (Math.random() * 21 + 15);
for (int i = mIDontKnowTimer; i == mRandom; i++) {
....
}
}
您看到的问题是您试图在其范围之外访问 mRandom 变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.