class Mover : Robot
{
void getAroundWall();
void getAround();
Boolean rightIsBlocked();
void turnRight();
};
void Mover :: turnRight()
{
loop(3)
{
turnLeft();
} // turn right
}
Boolean Mover :: rightIsBlocked()
{
turnRight();
if(frontIsClear() )
{
turnLeft();
return false;
} // not blocked
else
{
turnLeft();
return true;
} // blocked!
}
void Mover :: getAroundWall()
{
turnLeft();
getAround();
turnLeft();
}
void Mover :: getAround()
{
if(rightIsBlocked())
{
move();
getAround();
move();
}
else
{
turnRight();
move();
turnRight();
}
}
task
{
Mover Alex(6, 8, North, 0);
Alex.getAroundWall();
}