迷宫 - 随机鼠标算法无法按预期工作

时间:2014-10-25 21:56:12

标签: java maze

我正在实施一种随机鼠标算法来探索迷宫。一段时间后算法陷入无限循环。我对它进行了调试,似乎卡在通道之间来回徘徊。

请看一下我的算法实现。

这是我的代码:方向是相对于机器人的。

public boolean drive2Exit() throws Exception {
    Turn[] turn = {Turn.LEFT, Turn.RIGHT};
    while (!robot.isAtGoal() && robot.getBatteryLevel() != 0) {
        if (robot.distanceToObstacle(Direction.FORWARD) != 0) {
            try {
                robot.move(1);
            } catch (Exception e) {
            }
        } else {
            int index = randomGenerator.nextInt(turn.length);
            try {
                robot.rotate(turn[index]);
            } catch (Exception e) {
            }
        }
    }
    if (robot.isAtGoal())
        return true;
    return false;
}

1 个答案:

答案 0 :(得分:3)

假设你有一个T形通道:

┌───────┐
│       │
└──┐ ┌──┘

你的鼠标进入它,看到一堵墙,然后变成了T的一面。

┌───────┐
│   ┌>  │
└──┐ ┌──┘

然后它撞到了那边的墙壁。它转向 - 无论是左还是右。仍然看到一堵墙。所以它再次转向 - 直到它最终倒退。到目前为止一切都很好。

┌───────┐
│     <-│
└──┐ ┌──┘

但是,由于它没有看到墙,它将一直向前,直到T的另一侧。同样会发生,一遍又一遍。

┌───────┐
│->     │
└──┐ ┌──┘

你的程序没有任何选项会导致它决定转回T的腿,因为当他到达那里时,它前面没有障碍,为什么要转??/ / p >

┌───────┐
│   ↴   │   ** This option doesn't exist **
└──┐ ┌──┘