2013-04-11 149 views
2

好吧,所以我的任務是創建一些機器人,找到擺脫困境的方法。即牆上有一個洞,無論他們在哪裏產卵,他們都必須找到出路。如何生成一個隨機對象?

我創建了一個循環,使10米不同的機器人,但他們在同一個地方產卵所有:

EscapeBot[] Karel = new EscapeBot[numOfRobots]; 

for (int i = 0; i < numOfRobots; i++) { 
    Karel[i] = new EscapeBot(London, 1, 1, Direction.NORTH); 
    Karel[i].escapeRoom(); 

我應該使用中的for循環的Math.random來聲明整數,然後協調和方向在哪裏?

+0

這聽起來像一個體面的想法,是的。 – Keppil 2013-04-11 14:00:00

+0

你可以嘗試它併發布相關結果(包括卡雷爾位置/方向api) – giorashc 2013-04-11 14:00:00

回答

3

對於某些沒有看到你的EscapeBot類我不能說,但是這可能需要你想要的,如

Random rand = new Random(); 
new EscapeBot(London, rand.nextInt(max_x - 1) + 1, rand.nextInt(max_y - 1) + 1, Direction.NORTH); 

其中max_x是最大x座標和MAX_Y是最大y座標,假設基於1的索引(如果使用基於0的索引然後取出-1和+1份)。您可能還需要一系列指示,例如

Direction[] directions = new Direction { Direction.NORTH, Direction.SOUTH, .. } 

,使您的EscapeBot將

new EscapeBot(London, rand.nextInt(max_x - 1) + 1, rand.nextInt(max_y - 1) + 1, directions[rand.nextInt(directions.length)]); 
+0

對不起,這裏是EscapeBot類。 https://gist.github.com/anonymous/ea981988116d0b3f0be4不知道這是否改變了一切。 – 2013-04-11 14:13:31

+0

不,這幾乎是一樣的,除了max_x是max_street和max_y是max_avenue – 2013-04-11 14:15:12

+0

好的,非常感謝。欣賞它。 – 2013-04-11 14:15:48

1

如何做這樣的(如果你想讓機器人能產卵annywhere,只需用你的地圖尺寸更換產卵變量) :

for (int i = 0; i < numOfRobots; i++) { 
       Karel[i] = new EscapeBot(London, 
       SPAWN_X + SPAWN_LENGTH * Math.random(), 
       SPAWN_Y + SPAWN_WIDTH * Math.random(), 
       Direction.NORTH); 

       Karel[i].escapeRoom(); 
} 
+0

爲什麼偏移 - SPAWN_X? – 2013-04-11 14:12:53

+0

因此,你可以例如使它在地圖中心的一個矩形中產卵。 – Marckvdv 2013-04-11 15:09:31