java 在静态方法中创建新的随机数

5uzkadbs  于 2023-03-28  发布在  Java
关注(0)|答案(2)|浏览(190)

我试图在gridworld中做一个简单的游戏,你的船经过一个小行星带。小行星带应该有一个空的空间在它每次生成。我有一个方法称为nextAsteroidField(),创建这个带我的实现是这样的

public static void nextAsteroidField()
{
    int randNum = (int)(Math.random()*15)+1;
    for(int i = 1; i < 16; i++)
    {
        if(i == randNum)
        {
        }
        else
            world.add(new Location(0, i), new Asteroid());
    }
}

该方法必须是静态的,因为当创建第一个小行星带时,它是从类的main调用的。
第一次调用此方法时,它会创建预期的空间。每次前一行小行星进入网格底部时,我都会调用此方法。第二次和之后的每隔一次都没有间隙。

34gzjxbg

34gzjxbg1#

尝试使用Random类:

import java.util.Random;

public class Main{

static Random rnd = new Random();

public static void main( String[] args ){
    int randNum = rnd.nextInt( 16 )+1;
    for( int i = 0; i < 16; i++ )
        if( i != randNum )
            System.out.print("*");
        else
            System.out.print(" ");
    }
}
t98cgbkg

t98cgbkg2#

如果你第一次调用nextAsteroidField()就可以了,但第二次(或第三次......)就不行了,那么我认为你的问题是,你没有把小行星从你的世界中移除。
将您的方法更改为如下所示:

public static void nextAsteroidField()
{
    world.clearAsteroids(); //Clear the world, so no other asteroids block the gap
                            //Of course, you have to write this function ;)
    int randNum = (int)(Math.random()*15)+1;
    for(int i = 1; i < 16; i++)
    {
        if(i != randNum)
            world.add(new Location(0, i), new Asteroid());
    }
}

相关问题