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 吗?

4

2 回答 2

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)]);
于 2013-04-11T14:03:04.787 回答
1

这样做怎么样(如果你想让机器人能够在任何地方生成,只需用你的地图尺寸替换生成变量):

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();
}
于 2013-04-11T14:09:31.480 回答