Tugas 3 PBO B

Menggambar Pemandang Dengan BlueJ



1. Canvas


 import javax.swing.*;    
  import java.awt.*;    
  import java.util.List;    
  import java.util.*;    
  public class Canvas    
  {    
      
   private static Canvas canvasSingleton;    
     
   public static Canvas getCanvas()    
   {    
   if(canvasSingleton == null) {    
    canvasSingleton = new Canvas("BlueJ Shapes Demo", 600, 400,    
     Color.white);    
   }    
   canvasSingleton.setVisible(true);    
   return canvasSingleton;    
   }    
   // ----- instance part -----    
   private JFrame frame;    
   private CanvasPane canvas;    
   private Graphics2D graphic;    
   private Color backgroundColour;    
   private Image canvasImage;    
   private List<Object> objects;    
   private HashMap<Object, ShapeDescription> shapes;    
   
   private Canvas(String title, int width, int height, Color bgColour)    
   {    
   frame = new JFrame();    
   canvas = new CanvasPane();    
   frame.setContentPane(canvas);    
   frame.setTitle(title);    
   canvas.setPreferredSize(new Dimension(width, height));    
   backgroundColour = bgColour;    
   frame.pack();    
   objects = new ArrayList<Object>();    
   shapes = new HashMap<Object, ShapeDescription>();    
   }    
     
   public void setVisible(boolean visible)    
   {    
   if(graphic == null) {    
    // first time: instantiate the offscreen image and fill it with    
    // the background colour    
    Dimension size = canvas.getSize();    
    canvasImage = canvas.createImage(size.width, size.height);    
    graphic = (Graphics2D)canvasImage.getGraphics();    
    graphic.setColor(backgroundColour);    
    graphic.fillRect(0, 0, size.width, size.height);    
    graphic.setColor(Color.black);    
   }    
   frame.setVisible(visible);    
   }      
   public void draw(Object referenceObject, String color, Shape shape)    
   {    
   objects.remove(referenceObject); // just in case it was already there    
   objects.add(referenceObject); // add at the end    
   shapes.put(referenceObject, new ShapeDescription(shape, color));    
   redraw();    
   }    
     
   public void erase(Object referenceObject)    
   {    
   objects.remove(referenceObject); // just in case it was already there    
   shapes.remove(referenceObject);    
   redraw();    
   }    
       
   public void setForegroundColor(String colorString)    
   {    
   if(colorString.equals("red"))    
    graphic.setColor(Color.red);    
   else if(colorString.equals("black"))    
    graphic.setColor(Color.black);    
   else if(colorString.equals("blue"))    
    graphic.setColor(Color.blue);    
   else if(colorString.equals("yellow"))    
    graphic.setColor(Color.yellow);    
   else if(colorString.equals("green"))    
    graphic.setColor(Color.green);    
   else if(colorString.equals("magenta"))    
    graphic.setColor(Color.magenta);    
   else if(colorString.equals("white"))    
    graphic.setColor(Color.white);    
   else    
    graphic.setColor(Color.black);    
   }    
      
   public void wait(int milliseconds)    
   {    
   try    
   {    
    Thread.sleep(milliseconds);    
   }    
   catch (Exception e)    
   {    
    // ignoring exception at the moment    
   }    
   }    
     
   private void redraw()    
   {    
   erase();    
   for(Iterator i=objects.iterator(); i.hasNext(); ) {    
    ((ShapeDescription)shapes.get(i.next())).draw(graphic);    
   }    
   canvas.repaint();    
   }    
     
   private void erase()    
   {    
   Color original = graphic.getColor();    
   graphic.setColor(backgroundColour);    
   Dimension size = canvas.getSize();    
   graphic.fill(new Rectangle(0, 0, size.width, size.height));    
   graphic.setColor(original);    
   }    
       
   private class CanvasPane extends JPanel    
   {    
   public void paint(Graphics g)    
   {    
    g.drawImage(canvasImage, 0, 0, null);    
   }    
   }    
      
   private class ShapeDescription    
   {    
   private Shape shape;    
   private String colorString;    
   public ShapeDescription(Shape shape, String color)    
   {    
    this.shape = shape;    
    colorString = color;    
   }    
   public void draw(Graphics2D graphic)    
   {    
    setForegroundColor(colorString);    
    graphic.fill(shape);    
   }    
   }    
  }  


2. Picture


/**  
  * Write a description of class Picture here.  
  *  
  * @author (your name)  
  */  
 public class Picture    
  {    
   private Square TopBackground;   
   private Square BotBackground;   
   private Square homebase;  
   private Triangle leftMount;   
   private Triangle rightMount;   
   private Triangle rood;   
   private Triangle atap;   
   private Circle sun;   
   private Circle Cloud;    
   private Circle Cloud1;   
   private Circle Cloud2;   
   private Circle Cloud3;      
   public Picture()    
   {   
    TopBackground = new Square();   
    TopBackground.changeColor("blue donker");    
    TopBackground.moveHorizontal(-267);    
    TopBackground.moveVertical(-200);    
    TopBackground.changeSize(1000);    
    TopBackground.makeVisible();   
    BotBackground = new Square();   
    BotBackground.changeColor("blue");    
    BotBackground.moveHorizontal(-267);  
    BotBackground.moveVertical(-200);   
    BotBackground.changeSize(1000);   
    leftMount = new Triangle();   
    leftMount.changeSize(150, 400);    
    leftMount.moveHorizontal(150);    
    leftMount.moveVertical(40);    
    leftMount.changeColor("green");   
    leftMount.makeVisible();   
    rightMount = new Triangle();   
    rightMount.changeSize(150,400);   
    rightMount.moveHorizontal(380);   
    rightMount.moveVertical(40);   
    rightMount.changeColor("green");   
    rightMount.makeVisible();   
    sun = new Circle();   
    sun.changeColor("yellow");   
    sun.moveHorizontal(210);   
    sun.moveVertical(-40);   
    sun.changeSize(80);   
    sun.makeVisible(); 
    
    Cloud = new Circle();   
    Cloud.changeColor("red");   
    Cloud.moveHorizontal(250);   
    Cloud.moveVertical(-40);   
    Cloud.changeSize(40);   
    Cloud.makeVisible();   
    Cloud1 = new Circle();   
    Cloud1.changeColor("red");   
    Cloud1.moveHorizontal(270);   
    Cloud1.moveVertical(-25);   
    Cloud1.changeSize(40);   
    Cloud1.makeVisible();     
    rood = new Triangle();   
    rood.changeSize(195,100);   
    rood.moveHorizontal(275);   
    rood.moveVertical(190);   
    rood.changeColor("blue");   
    rood.makeVisible();  
    homebase = new Square();   
    homebase.changeSize(50);    
    homebase.moveHorizontal(150);    
    homebase.moveVertical(40);    
    homebase.changeColor("red");   
    homebase.makeVisible();   
    atap = new Triangle();   
    atap.changeSize(50, 50);    
    atap.moveHorizontal(395);    
    atap.moveVertical(175);    
    atap.changeColor("blue");   
    atap.makeVisible();   
       
   } 
   public void draw()    
   {    
   }    
  }    


3. Circle

/**  
  * Write a description of class Circle here.  
  *  
  * @author (your name)
  */  
  import java.awt.*;    
  import java.awt.geom.*;    
  public class Circle    
  {    
   private int diameter;    
   private int xPosition;    
   private int yPosition;    
   private String color;    
   private boolean isVisible;    
     
   public Circle()    
   {    
   diameter = 30;    
   xPosition = 20;    
   yPosition = 60;    
   color = "yellow";    
   isVisible = false;    
   }    
      
   public void makeVisible()    
   {    
   isVisible = true;    
   draw();    
   }    
      
   public void makeInvisible()    
   {    
   erase();    
   isVisible = false;    
   }    
       
   public void moveRight()    
   {    
   moveHorizontal(20);    
   }    
       
   public void moveLeft()    
   {    
   moveHorizontal(-20);    
   }    
       
   public void moveUp()    
   {    
   moveVertical(-20);    
   }    
      
   public void moveDown()    
   {    
   moveVertical(20);    
   }    
       
   public void moveHorizontal(int distance)    
   {    
   erase();    
   xPosition += distance;    
   draw();    
   }    
       
   public void moveVertical(int distance)    
   {    
   erase();    
   yPosition += distance;    
   draw();    
   }    
       
   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();    
   }    
   }    
       
   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();    
   }    
   }    
       
   public void changeSize(int newDiameter)    
   {    
   erase();    
   diameter = newDiameter;    
   draw();    
   }    
       
   public void changeColor(String newColor)    
   {    
   color = newColor;    
   draw();    
   }    
       
   private void draw()    
   {    
   if(isVisible) {    
    Canvas canvas = Canvas.getCanvas();    
    canvas.draw(this, color, new Ellipse2D.Double(xPosition, yPosition,    
     diameter, diameter));    
    canvas.wait(10);    
   }    
   }    
      
   private void erase()    
   {    
   if(isVisible) {    
    Canvas canvas = Canvas.getCanvas();    
    canvas.erase(this);    
   }    
   }    
  }    

4. Square
/**  
  * Write a description of class Square here.  
  *  
  * @author (your name)
  */  
  import java.awt.*;    
  public class Square    
  {    
   private int size;    
   private int xPosition;    
   private int yPosition;    
   private String color;    
   private boolean isVisible;    
     
   public Square()    
   {    
   size = 100;    
   xPosition = 260;    
   yPosition = 200;    
   color = "blue";    
   isVisible = false;    
   }    
      
   public void makeVisible()    
   {    
   isVisible = true;    
   draw();    
   }    
      
   public void makeInvisible()    
   {    
   erase();    
   isVisible = false;    
   }    
       
   public void moveRight()    
   {    
   moveHorizontal(20);    
   }    
       
   public void moveLeft()    
   {    
   moveHorizontal(-20);    
   }    
       
   public void moveUp()    
   {    
   moveVertical(-20);    
   }    
      
   public void moveDown()    
   {    
   moveVertical(20);    
   }    
       
   public void moveHorizontal(int distance)    
   {    
   erase();    
   xPosition += distance;    
   draw();    
   }    
       
   public void moveVertical(int distance)    
   {    
   erase();    
   yPosition += distance;    
   draw();    
   }    
       
   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();    
   }    
   }    
       
   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();    
   }    
   }    
     
   public void changeSize(int newSize)    
   {    
   erase();    
   size = newSize;    
   draw();    
   }    
       
   public void changeColor(String newColor)    
   {    
   color = newColor;    
   draw();    
   }    
       
   private void draw()    
   {    
   if(isVisible) {    
    Canvas canvas = Canvas.getCanvas();    
    canvas.draw(this, color,    
     new Rectangle(xPosition, yPosition, size, size));    
    canvas.wait(10);    
   }    
   }    
       
   private void erase()    
   {    
   if(isVisible) {    
    Canvas canvas = Canvas.getCanvas();    
    canvas.erase(this);    
   }    
   }    
  }    

5. Triangel

/**  
  * Write a description of class Triangle here.  
  *  
  * @author (your name)  
  */  
  import java.awt.*;    
  public class Triangle    
  {    
   private int height;    
   private int width;    
   private int xPosition;    
   private int yPosition;    
   private String color;    
   private boolean isVisible;    
   
   public Triangle()    
   {    
   height = 30;    
   width = 30;    
   xPosition = 40;    
   yPosition = 15;    
   color = "green";    
   isVisible = false;    
   }    
      
   public void makeVisible()    
   {    
   isVisible = true;    
   draw();    
   }    
       
   public void makeInvisible()    
   {    
   erase();    
   isVisible = false;    
   }    
       
   public void moveRight()    
   {    
   moveHorizontal(40);    
   }    
       
   public void moveLeft()    
   {    
   moveHorizontal(-20);    
   }    
      
   public void moveUp()    
   {    
   moveVertical(-20);    
   }    
       
   public void moveDown()    
   {    
   moveVertical(20);    
   }    
   
   public void moveHorizontal(int distance)    
   {    
   erase();    
   xPosition += distance;    
   draw();    
   }    
       
   public void moveVertical(int distance)    
   {    
   erase();    
   yPosition += distance;    
   draw();    
   }    
      
   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();    
   }    
   }    
      
   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();    
   }    
   }    
       
   public void changeSize(int newHeight, int newWidth)    
   {    
   erase();    
   height = newHeight;    
   width = newWidth;    
   draw();    
   }    
       
   public void changeColor(String newColor)    
   {    
   color = newColor;    
   draw();    
   }    
      
   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);    
   }    
   }    
   
   private void erase()    
   {    
   if(isVisible) {    
    Canvas canvas = Canvas.getCanvas();    
    canvas.erase(this);    
   }    
   }    
  }    


Hasil dari code :


Komentar

Postingan Populer