Karel 为什么卡雷尔的机器人即使站在传呼机上也不停下来?

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

我试图解决这个问题(2.4.1,SolveTheMaze),但出于某种原因,当机器人在使用寻呼机时,它并没有停止——它只是继续前进。好像我创造了一个无限循环下面是问题的图片:

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();
   } 
}
这是我的解决办法。 不是很聪明,但很管用:)