繁体   English   中英

如何将 math.random 变成 for 循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM