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();
}