1

我正在尝试在您的船穿过和小行星带的网格世界中制作一个简单的游戏。小行星带应该在每次生成时都有一个空白空间。我有一个名为 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());
    }
}

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

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

4

2 回答 2

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(" ");
    }
}
于 2013-05-25T17:12:47.740 回答
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());
    }
}
于 2013-05-25T17:29:22.370 回答