import java.awt.*; import java.awt.geom.*; /** * A circle that can be manipulated and that draws itself on a canvas. */ public class SimpleCircle { private int xPosition; private int yPosition; private String color; /** * Create a new circle at default position with default color. */ public SimpleCircle() { xPosition = 20; yPosition = 60; color = "blue"; draw(); } /** * Move the circle horizontally by 'distance' pixels. */ public void moveHorizontal(int distance) { erase(); xPosition += distance; draw(); } /** * Move the circle vertically by 'distance' pixels. */ public void moveVertical(int distance) { erase(); yPosition += distance; draw(); } /** * Change the color. Valid colors are "red", "yellow", "blue", "green", * "magenta" and "black". */ public void changeColor(String newColor) { erase(); color = newColor; draw(); } /** * Make the circle dance around */ public void doCircleDance() { moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveHorizontal(1); moveVertical(80); moveHorizontal(-80); moveVertical(-80); } // How far is the circle from (0,0)? public double calcOriginDistance() { //get x & y position, square them, and take the square root double distance; distance = xPosition*xPosition + yPosition*yPosition; distance = Math.sqrt(distance); return distance; } //Print out the circle’s distance from the origin public void printOriginDistance() { System.out.println((int)calcOriginDistance()); } /* * Draw the circle with current specifications on screen. */ private void draw() { Canvas canvas = Canvas.getCanvas(); Ellipse2D theEllipse = new Ellipse2D.Double(xPosition, yPosition, 20, 20); canvas.draw(this, color, theEllipse); canvas.wait(10); } /* * Erase the circle on screen. */ private void erase() { Canvas canvas = Canvas.getCanvas(); canvas.erase(this); } }