2013-05-25 66 views
0

我想在gridworld中通過一個簡單的遊戲,並且你的船通過並且有一個asteriod帶。每當它產生時,小行星帶應該有一個空的空間。我有一個創建這一帶我implementaion它是這個在靜態方法中創建一個新的隨機數

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()); 
    } 
} 

的方法必須是靜態的,因爲它創建了第一個小行星帶時,被從主類的稱呼)叫nextAsteroidField(的方法。

第一次調用此方法時,它會像預期的那樣創建空間。每當前一行小行星進入網格的底部時,我就會調用這個方法。第二次和其他時間沒有差距。

+2

問題是什麼/問題? –

+0

第一次調用此方法時,它會像預期的那樣創建空間。每當前一行小行星進入網格的底部時,我就會調用這個方法。第二次和其他時間沒有差距。對不起 – user2420736

+0

你現在的randNum是在1到15之間,你迭代1到15,對我來說問題似乎並沒有在這裏,什麼是世界,你如何在給定的位置添加小行星?我看到你的代碼的隨機部分沒有問題。 – arynaq

回答

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

你應該提供一個解釋(爲什麼)... – home

+0

@home啊,當然。感謝您的反饋! (我是新來的)。雖然,我真的不知道爲什麼原始代碼不工作。它適用於我,如果我創造了像恆星那樣的小行星。 – khreenberg

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()); 
    } 
}