Class AbstractTurtle

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<SpacePosition>
    Direct Known Subclasses:
    DigitalTurtle, Turtle

    @MappedSuperclass
    public abstract class AbstractTurtle
    extends SpacePosition
    An agent able to move itself upon an object grid. It has got some specific instruction for movement. Each turtle has an 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.

    Title: JAS

    Description: Java Agent-based Simulation library

    Copyright (C) 2002 Michele Sonnessa

    This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
    Author:
    Michele Sonnessa

    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      AbstractTurtle()
      Create a turtle with a given identifier on the given grid at position (0,0).
      AbstractTurtle​(ObjectSpace grid)
      Create a turtle with a given identifier on the given grid at position (0,0).
      AbstractTurtle​(ObjectSpace grid, int x, int y)
      Create a turtle with a given identifier on the given grid at the given position.
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void forward()
      Make a step forward, according the current heading.
      abstract void forward​(int steps)
      Make some steps forward, according the current heading.
      double getDistanceFrom​(int xCor, int yCor)
      Compute the cartesian distance from its position to the given position.
      ObjectSpace getGrid()  
      abstract int getHeading()
      Return the current heading of the turtle.
      AbstractTurtle.MoveMode getMovingType()
      Return the behaviour of the turtle when it goes out of bounds of the grid.
      int getNextX()
      Return the new x coordinate walking the current heading direction for 1 step.
      abstract int getNextX​(int steps)
      Return the new x coordinate walking the current heading direction for given steps.
      int getNextY()
      Return the new y coordinate walking the current heading direction for 1 step.
      abstract int getNextY​(int steps)
      Return the new y coordinate walking the current heading direction for given steps.
      SpacePosition getPosition()  
      int getWorldHeight()
      Return the y size of the grid.
      int getWorldWidth()
      Return the x size of the grid.
      int getX()
      Return the current x position.
      int getY()
      Return the current y position.
      boolean leap()
      Make a steps forward, but moves only if the target position is empty.
      abstract boolean leap​(int steps)
      Make some steps forward, but moves only if the target position is empty.
      abstract void setCardinalHeading​(AbstractTurtle.Direction directionType)
      Set the turtle's heading using a constant for cardinal points.
      void setGrid​(ObjectSpace grid)  
      abstract void setHeading​(int heading)
      Set the current heading.
      boolean setIfEmptyXY​(int x, int y)
      Set a new position, only if new position is empty.
      void setMovingType​(AbstractTurtle.MoveMode movingType)
      Set the behaviour of the turtle when it goes out of bounds of the grid.
      abstract void setRandomHeading()
      Randomize the turtle's heading.
      void setX​(int x)
      Set a new x position.
      void setXY​(int x, int y)
      Set a new position.
      void setY​(int y)
      Set a new y position.
      abstract void turnCardinalLeft​(int steps)  
      abstract void turnCardinalRight​(int steps)  
      abstract void turnLeft​(int degrees)
      Change the current heading rotating it to the left.
      abstract void turnRight​(int degrees)
      Change the current heading rotating it to the right.
      • Methods inherited from class java.lang.Object

        getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • AbstractTurtle

        public AbstractTurtle()
        Create a turtle with a given identifier on the given grid at position (0,0).
        Parameters:
        id - The identifier for turtle.
        grid - The grid upon the turtle moves.
      • AbstractTurtle

        public AbstractTurtle​(ObjectSpace grid)
        Create a turtle with a given identifier on the given grid at position (0,0).
        Parameters:
        id - The identifier for turtle.
        grid - The grid upon the turtle moves.
      • AbstractTurtle

        public AbstractTurtle​(ObjectSpace grid,
                              int x,
                              int y)
        Create a turtle with a given identifier on the given grid at the given position. Set its color to the given color.
        Parameters:
        id - The identifier for turtle.
        x - The initial x coordinate of the turtle.
        y - The initial y coordinate of the turtle.
        grid - The grid upon the turtle moves.
    • Method Detail

      • getMovingType

        public AbstractTurtle.MoveMode getMovingType()
        Return the behaviour of the turtle when it goes out of bounds of the grid.
        Returns:
        The moving type identifier.
      • setMovingType

        public void setMovingType​(AbstractTurtle.MoveMode movingType)
        Set the behaviour of the turtle when it goes out of bounds of the grid.
        Parameters:
        movingType - A moving type identifier.
      • getWorldHeight

        public int getWorldHeight()
        Return the y size of the grid.
        Returns:
        The height of the grid.
      • getWorldWidth

        public int getWorldWidth()
        Return the x size of the grid.
        Returns:
        The width of the grid.
      • getHeading

        public abstract int getHeading()
        Return the current heading of the turtle.
        Returns:
        The current heading.
      • setRandomHeading

        public abstract void setRandomHeading()
        Randomize the turtle's heading. It gets a random number from 0 to 359 degrees. The random generator is synchronized with JAS randomizer.
      • setCardinalHeading

        public abstract void setCardinalHeading​(AbstractTurtle.Direction directionType)
        Set the turtle's heading using a constant for cardinal points.
        Parameters:
        directionType - One of DIR_NORTH, DIR_NORTH_EAST, ... constant.
      • setHeading

        public abstract void setHeading​(int heading)
        Set the current heading.
        Parameters:
        heading - The new heading.
      • turnRight

        public abstract void turnRight​(int degrees)
        Change the current heading rotating it to the right.
        Parameters:
        degrees - The number of degrees to rotate the heading.
      • turnCardinalRight

        public abstract void turnCardinalRight​(int steps)
      • turnLeft

        public abstract void turnLeft​(int degrees)
        Change the current heading rotating it to the left.
        Parameters:
        degrees - The number of degrees to rotate the heading.
      • turnCardinalLeft

        public abstract void turnCardinalLeft​(int steps)
      • forward

        public void forward()
        Make a step forward, according the current heading.
      • forward

        public abstract void forward​(int steps)
        Make some steps forward, according the current heading.
        Parameters:
        steps - The number of steps the turtle has to make.
      • leap

        public boolean leap()
        Make a steps forward, but moves only if the target position is empty.
        Returns:
        True only if the turtle has moved.
      • leap

        public abstract boolean leap​(int steps)
        Make some steps forward, but moves only if the target position is empty.
        Parameters:
        steps - The number of steps the turtle has to make.
        Returns:
        True only if the turtle has moved.
      • getDistanceFrom

        public double getDistanceFrom​(int xCor,
                                      int yCor)
        Compute the cartesian distance from its position to the given position. WARNING The (xCor, yCor) must be within the grid. The bounds are not checked.
        Parameters:
        xCor - The target x coordinate.
        yCor - The target y coordinate.
        Returns:
        The cartesian distance between points.
      • getX

        public int getX()
        Return the current x position.
        Overrides:
        getX in class SpacePosition
        Returns:
        The x coordinate.
      • getY

        public int getY()
        Return the current y position.
        Overrides:
        getY in class SpacePosition
        Returns:
        The y coordinate.
      • setX

        public void setX​(int x)
        Set a new x position.
        Parameters:
        x - The new x coordinate.
      • setY

        public void setY​(int y)
        Set a new y position.
        Parameters:
        y - The new y coordinate.
      • setXY

        public void setXY​(int x,
                          int y)
        Set a new position.
        Parameters:
        x - The new x coordinate.
        y - The new y coordinate.
      • setIfEmptyXY

        public boolean setIfEmptyXY​(int x,
                                    int y)
        Set a new position, only if new position is empty.
        Parameters:
        x - The new x coordinate.
        y - The new y coordinate.
        Returns:
        True only if the turtle has moved.
      • getNextX

        public abstract 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.
        Parameters:
        steps - The number of steps to move forward.
        Returns:
        The candidate x coordinate.
      • getNextX

        public int getNextX()
        Return the new x coordinate walking the current heading direction for 1 step. It uses the grid bound checking methods according to the turtle's current moving type.
        Returns:
        The candidate x coordinate.
      • getNextY

        public abstract 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.
        Parameters:
        steps - The number of steps to move forward.
        Returns:
        The candidate y coordinate.
      • getNextY

        public int getNextY()
        Return the new y coordinate walking the current heading direction for 1 step. It uses the grid bound checking methods according to the turtle's current moving type.
        Returns:
        The candidate y coordinate.