Class Turtle

All Implemented Interfaces:
Serializable, Comparable<SpacePosition>

@MappedSuperclass public class Turtle extends AbstractTurtle
An agent is able to move itself upon an object grid. It has got some specific instruction for movement. Each turtle has a heading expressed in degrees. It can make steps, turn right or left, measure the distance from another position on the grid. Each turtle has a color, and it is able to draw itself on a grid drawing layer.
See Also:
  • Constructor Details

    • Turtle

      public Turtle()
    • Turtle

      public Turtle(@NonNull @NonNull ObjectSpace grid)
      Create a turtle on the given grid at position (0,0).
      Parameters:
      grid - The grid upon the turtle moves.
    • Turtle

      public Turtle(@NonNull @NonNull ObjectSpace grid, int x, int y)
      Create a turtle on the given grid at the given position.
      Parameters:
      x - The initial x coordinate of the turtle.
      y - The initial y coordinate of the turtle.
      grid - The grid upon the turtle moves.
  • Method Details

    • getHeading

      public int getHeading()
      Description copied from class: AbstractTurtle
      Returns the current heading of the turtle.
      Specified by:
      getHeading in class AbstractTurtle
      Returns:
      The current heading.
    • setHeading

      public void setHeading(int heading)
      Set the current heading.
      Specified by:
      setHeading in class AbstractTurtle
      Parameters:
      heading - The new heading.
    • setRandomHeading

      public void setRandomHeading()
      Randomize the turtle's heading. It gets a random number from 0 to 359 degrees.
      Specified by:
      setRandomHeading in class AbstractTurtle
    • setCardinalHeading

      public void setCardinalHeading(@NonNull @NonNull AbstractTurtle.Direction directionType)
      Set the turtle's heading using a constant for cardinal points.
      Specified by:
      setCardinalHeading in class AbstractTurtle
      Parameters:
      directionType - One of DIR_NORTH, DIR_NORTH_EAST, ... constant.
    • turnCardinalLeft

      public void turnCardinalLeft(int steps)
      Specified by:
      turnCardinalLeft in class AbstractTurtle
    • turnCardinalRight

      public void turnCardinalRight(int steps)
      Specified by:
      turnCardinalRight in class AbstractTurtle
    • turnRight

      public void turnRight(int degrees)
      Change the current heading rotating it to the right.
      Specified by:
      turnRight in class AbstractTurtle
      Parameters:
      degrees - The number of degrees to rotate the heading.
    • turnLeft

      public void turnLeft(int degrees)
      Change the current heading rotating it to the left.
      Specified by:
      turnLeft in class AbstractTurtle
      Parameters:
      degrees - The number of degrees to rotate the heading.
    • forward

      public void forward(int steps)
      Make some steps forward, according the current heading.
      Specified by:
      forward in class AbstractTurtle
      Parameters:
      steps - The number of steps the turtle has to make.
    • leap

      public boolean leap(int steps)
      Make some steps forward, but moves only if the target position is empty.
      Specified by:
      leap in class AbstractTurtle
      Parameters:
      steps - The number of steps the turtle has to make.
      Returns:
      True only if the turtle has moved.
    • setXY

      public void setXY(int x, int y)
      Set a new position.
      Overrides:
      setXY in class AbstractTurtle
      Parameters:
      x - The new x coordinate.
      y - The new y coordinate.
    • getNextX

      public int getNextX(int steps)
      Return the new x coordinate walking the current heading direction for given steps. It uses the grid bound checking methods according to the turtle's current moving type.
      Specified by:
      getNextX in class AbstractTurtle
      Parameters:
      steps - The number of steps to move forward.
      Returns:
      The candidate x coordinate.
    • getNextY

      public int getNextY(int steps)
      Return the new y coordinate walking the current heading direction for given steps. It uses the grid bound checking methods according to the turtle's current moving type.
      Specified by:
      getNextY in class AbstractTurtle
      Parameters:
      steps - The number of steps to move forward.
      Returns:
      The candidate y coordinate.