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

时间:2013-05-25 16:57:12

标签: java gridworld

我正试图在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());
    }
}

该方法必须是静态的,因为在创建第一颗小行星带时,它是从类的主要部分调用的。

第一次调用此方法时,它会创建预期的空间。每当前一行小行星进入网格底部时,我就会调用此方法。第二次和之后的每一次都没有差距。

2 个答案:

答案 0 :(得分:0)

尝试使用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(" ");
    }
}

答案 1 :(得分:0)

如果它第一次调用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());
    }
}