Как сделать математику.случайный в цикл for

короче говоря, я создал математику.случайный, который выберет случайное число, а затем другая переменная позже будет использовать это число. После этого используется случайная математика.random выберет другое число, и это будет продолжаться вечно. Я думал бы использовать цикл for с математикой.random делает его похожим на это:

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» в коде

3 ответа

  1. Сначала я бы поставил математику.Случайный в функцию и вызовите его в моем основном цикле.

    public static int randomNumberGenerator(int min, int max){
            Random rand = new Random();
            return rand.nextInt(max - min) +min;
    
        }
    

    Теперь вызовите его в for/whileпетле.

  2. Как написано, Ваш 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);
        }
    }
    

    Стоит отметить, что, если вы не перерисовываете свой спрайт где — то там, дополнительные изменения скорости и угла будут бессмысленными-вы обновляете эти свойства несколько раз, но перерисовываете только один раз, поэтому только самое последнее изменение будет прилипать.

  3. Я думаю, что вы пытаетесь сделать это

    for (int i = 0; i <100; i++) {
        int mRandom = (int) (Math.random() * 21 + 15);
    
        for (int i = mIDontKnowTimer; i == mRandom; i++) {
            ....
        }
    }
    

    Проблема, которую вы видите, заключается в том, что вы пытались получить доступ к переменной mRandom вне ее области.