如何生成随机对象?

时间:2013-04-11 13:58:23

标签: java random

好的,所以我的任务是创造一些能够摆脱困境的机器人。即墙上有一个洞,他们必须找到出路,无论它们在哪里产卵。

我创建了一个循环,可以制作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吗?

2 个答案:

答案 0 :(得分: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)]);

答案 1 :(得分: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();
}