import javax.swing.*; /** * Creates turtles for the logo interpreter. * Tracks position and direction of the turtle and provides methods to move and rotate the turtle. */ public class Turtle{ /** x coordinate of the turtle */ private int x; /** y coordinate of the turtle */ private int y; /** direction the turtle is facing, in radians */ private double direction; /** name of the turtle */ private String name; private String imagePath; private ImageIcon turtleIcon; /** * Constructs a new Turtle using default values for x, y, direction, using x and y values of zero and a direction of 90 degrees, and a name of the turtle relating to the number in existance. */ // public Turtle(){ // this("Turtle" + count); //} /** * Constructs a new Turtle using default values for x, y, direction, but allows the name to be specified. * @param name The name of the new turtle object. */ public Turtle(String name){ //this(0,0,90,name,"turtle.png"); this(0,0,90,name); } public Turtle(String name, String imagePath){ //this(0,0,90,name,imagePath); this(0,0,90,name); } /** * Constructs a new Turtle specifying an initial x,y position and direction. * @param x the initial x position of the turtle * @param y the initial y position of the turtle * @param direction the initial direction of the turtle, in degrees. */ public Turtle(int x, int y, double direction, String name){ this.x = x; this.y = y; this.direction = Math.toRadians(direction); this.name = name; //this.imagePath = imagePath; //turtleIcon = new ImageIcon(this.imagePath); } /** * Gets the value of x. * @return the current x position */ public int getX(){ return x; } /** * Gets the value of y. * @return the current y position */ public int getY(){ return y; } /** * Gets the value of the direction. * @return the current direction, in radians */ public double getDirection(){ return direction; } /** * Gets the turtle's name * @return the turtle's name */ public String getName(){ return name; } /** * Gets the number of turtles. * @return the number of turtles */ //public int getCount(){ // return count; //} /** * Gets the image path for the turtle. * @return the path to the turtle image */ public String getImagePath(){ return imagePath; } public ImageIcon getTurtleIcon(){ return turtleIcon; } /** * Sets the value of x. * @param x the new value of x */ public void setX(int x){ this.x = x; } /** * Sets the value of y. * @param y the new value of y */ public void setY(int y){ this.y = y; } /** * Sets the value of the direction. * @param direction the new value of the direction, in radians */ public void setDirection(double direction){ this.direction = direction; } /** * Sets the name of the turtle. * @param name the name of the turtle */ public void setName(String name){ this.name = name; } /** * Sets the image path of the turtle * @param imagePath the path to the image */ public void setImagePath(String imagePath){ this.imagePath = imagePath; } public void setTurtleIcon(ImageIcon turtleIcon){ this.turtleIcon = turtleIcon; } /** * Rotates the turtle. * @param angle the direction to rotate the turtle, in degrees */ public void rotate(int angle){ direction += Math.toRadians(angle); } /** * Moves the turtle. * Takes the distance and adds the x and y components to x and y * @param dist the total distance to move the turtle */ public void move(int dist){ x += (int)(dist*Math.cos(direction)); y += (int)(dist*Math.sin(direction)); } }