123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- import java.awt.*;
-
- /**
- * A triangle that can be manipulated and that draws itself on a canvas.
- *
- * @author Michael Kölling and David J. Barnes
- * @version 1.0 (15 July 2000)
- */
-
- public class Triangle
- {
- private int height;
- private int width;
- private int xPosition;
- private int yPosition;
- private String color;
- private boolean isVisible;
-
- /**
- * Create a new triangle at default position with default color.
- */
- public Triangle()
- {
- height = 30;
- width = 40;
- xPosition = 50;
- yPosition = 15;
- color = "green";
- isVisible = false;
- }
-
- /**
- * Make this triangle visible. If it was already visible, do nothing.
- */
- public void makeVisible()
- {
- isVisible = true;
- draw();
- }
-
- /**
- * Make this triangle invisible. If it was already invisible, do nothing.
- */
- public void makeInvisible()
- {
- erase();
- isVisible = false;
- }
-
- /**
- * Move the triangle a few pixels to the right.
- */
- public void moveRight()
- {
- moveHorizontal(20);
- }
-
- /**
- * Move the triangle a few pixels to the left.
- */
- public void moveLeft()
- {
- moveHorizontal(-20);
- }
-
- /**
- * Move the triangle a few pixels up.
- */
- public void moveUp()
- {
- moveVertical(-20);
- }
-
- /**
- * Move the triangle a few pixels down.
- */
- public void moveDown()
- {
- moveVertical(20);
- }
-
- /**
- * Move the triangle horizontally by 'distance' pixels.
- */
- public void moveHorizontal(int distance)
- {
- erase();
- xPosition += distance;
- draw();
- }
-
- /**
- * Move the triangle vertically by 'distance' pixels.
- */
- public void moveVertical(int distance)
- {
- erase();
- yPosition += distance;
- draw();
- }
-
- /**
- * Slowly move the triangle horizontally by 'distance' pixels.
- */
- public void slowMoveHorizontal(int distance)
- {
- int delta;
-
- if(distance < 0)
- {
- delta = -1;
- distance = -distance;
- }
- else
- {
- delta = 1;
- }
-
- for(int i = 0; i < distance; i++)
- {
- xPosition += delta;
- draw();
- }
- }
-
- /**
- * Slowly move the triangle vertically by 'distance' pixels.
- */
- public void slowMoveVertical(int distance)
- {
- int delta;
-
- if(distance < 0)
- {
- delta = -1;
- distance = -distance;
- }
- else
- {
- delta = 1;
- }
-
- for(int i = 0; i < distance; i++)
- {
- yPosition += delta;
- draw();
- }
- }
-
- /**
- * Change the size to the new size (in pixels). Size must be >= 0.
- */
- public void changeSize(int newHeight, int newWidth)
- {
- erase();
- height = newHeight;
- width = newWidth;
- draw();
- }
-
- /**
- * Change the color. Valid colors are "red", "yellow", "blue", "green",
- * "magenta" and "black".
- */
- public void changeColor(String newColor)
- {
- color = newColor;
- draw();
- }
-
- /*
- * Draw the triangle with current specifications on screen.
- */
- private void draw()
- {
- if(isVisible) {
- Canvas canvas = Canvas.getCanvas();
- int[] xpoints = { xPosition, xPosition + (width/2), xPosition - (width/2) };
- int[] ypoints = { yPosition, yPosition + height, yPosition + height };
- canvas.draw(this, color, new Polygon(xpoints, ypoints, 3));
- canvas.wait(10);
- }
- }
-
- /*
- * Erase the triangle on screen.
- */
- private void erase()
- {
- if(isVisible) {
- Canvas canvas = Canvas.getCanvas();
- canvas.erase(this);
- }
- }
- }
|