예제 #1
0
  protected PointOfInterest standingOrder(Point2D whereIAm) {
    Point2D target =
        new Point2D.Double(
            whereIAm.getX() + (spiralHeading.getDx() * MOVEMENT_LENGTH),
            whereIAm.getY() + (spiralHeading.getDy() * MOVEMENT_LENGTH));

    while (!StaticDiver.pointIsOnBoard(target.getX(), target.getY(), boardRadius)) {
      switch (spiralHeading) {
        case N:
          spiralHeading = Direction.W;
          break;
        case E:
          spiralHeading = Direction.N;
          break;
        case S:
          spiralHeading = Direction.E;
          break;
        case W:
          spiralHeading = Direction.S;
          break;
      }

      target =
          new Point2D.Double(
              whereIAm.getX() + (spiralHeading.getDx() * MOVEMENT_LENGTH),
              whereIAm.getY() + (spiralHeading.getDy() * MOVEMENT_LENGTH));
    }

    return new PointOfInterest(target);
  }