Karel 为什么卡雷尔的机器人即使站在传呼机上也不停下来?
我试图解决这个问题(2.4.1,SolveTheMaze),但出于某种原因,当机器人在使用寻呼机时,它并没有停止——它只是继续前进。好像我创造了一个无限循环下面是问题的图片:Karel 为什么卡雷尔的机器人即使站在传呼机上也不停下来?,karel,Karel,我试图解决这个问题(2.4.1,SolveTheMaze),但出于某种原因,当机器人在使用寻呼机时,它并没有停止——它只是继续前进。好像我创造了一个无限循环下面是问题的图片: void solveTheMaze() { while (!onBeeper()) { CrossABarrier(); } } void CrossABarrier() { while (frontIsClear()) { moveForward();
void solveTheMaze()
{
while (!onBeeper())
{
CrossABarrier();
}
}
void CrossABarrier()
{
while (frontIsClear())
{
moveForward();
if (frontIsClear() && leftIsClear())
{
turnLeft();
}
rightOrleftNotClear();
while (!frontIsClear())
{
turnLeft();
}
}
}
void rightOrleftNotClear()
{
if (!frontIsClear() && !leftIsClear())
{
turnRight();
}
else if (!frontIsClear() && !rightIsClear())
{
turnLeft();
}
}
代码如下:
void solveTheMaze()
{
while (!onBeeper())
{
CrossABarrier();
}
}
void CrossABarrier()
{
while (frontIsClear())
{
moveForward();
if (frontIsClear() && leftIsClear())
{
turnLeft();
}
rightOrleftNotClear();
while (!frontIsClear())
{
turnLeft();
}
}
}
void rightOrleftNotClear()
{
if (!frontIsClear() && !leftIsClear())
{
turnRight();
}
else if (!frontIsClear() && !rightIsClear())
{
turnLeft();
}
}
这是我的解决办法。
不是很聪明,但很管用:)