我正试图在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());
}
}
该方法必须是静态的,因为在创建第一颗小行星带时,它是从类的主要部分调用的。
第一次调用此方法时,它会创建预期的空间。每当前一行小行星进入网格底部时,我就会调用此方法。第二次和之后的每一次都没有差距。
答案 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());
}
}