Minggu, 16 September 2018

Tugas 2 PBO-A Membuat Rumah dengan BlueJ

Pada kali ini, saya akan melanjutkan tugas 2 kemarin yaitu dengan membuat rumah menggunakan BlueJ.
Untuk membuat rumah ini dibutuhkan 5 class yaitu : Canvas, Circle, Recta, Square, dan Triangle

Hasil Rumah :



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;  
   }  
   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); 
     objects.add(referenceObject);
     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 static final Color Dark_Brown = new Color(51,0,0);
   public static final Color Grey = new Color(153,153,153);
   public static final Color Purple = new Color(102,0,153);
   public static final Color Dark_Red = new Color(153,0,0);
   public static final Color Light_Blue = new Color(51,204,255);
   
   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("pink"))  
       graphic.setColor(Color.pink);  
     else if(colorString.equals("white"))  
       graphic.setColor(Color.white);  
     else if(colorString.equals("orange"))
       graphic.setColor(Color.orange); 
     else if(colorString.equals("darkbrown"))
       graphic.setColor(Dark_Brown); 
     else if(colorString.equals("grey"))
       graphic.setColor(Grey);
     else if(colorString.equals("purple"))
       graphic.setColor(Purple);
     else if(colorString.equals("darkred"))
       graphic.setColor(Dark_Red);
     else if(colorString.equals("lightblue"))
       graphic.setColor(Light_Blue);
     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);  
     }  
   }  
 }  

Circle :



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;  
   // New Circle
   public Circle()
   {  
     diameter = 30;  
     xPosition = 20;  
     yPosition = 60;  
     color = "blue";  
     isVisible = false;  
   }  
   // Make Shape Visible
   public void makeVisible()  
   {  
     isVisible = true;  
     draw();  
   }  
   // Make Shape Invisible
   public void makeInvisible()  
   {  
     erase();  
     isVisible = false;  
   }  
   // Geser Kanan
   public void moveRight()  
   {  
     moveHorizontal(20);  
   }  
   // Geser Kiri
   public void moveLeft()  
   {  
     moveHorizontal(-20);  
   }  
   // Geser Atas
   public void moveUp()  
   {  
     moveVertical(-20);  
   }  
   // Geser Bawah
   public void moveDown()  
   {  
     moveVertical(20);  
   }  
   // Geser Horizontal dengan banyak pixel
   public void moveHorizontal(int distance)  
   {  
     erase();  
     xPosition += distance;  
     draw();  
   }  
   // Geser Vertikal dengan banyak pixel
   public void moveVertical(int distance)  
   {  
     erase();  
     yPosition += distance;  
     draw();  
   }   
   // Ganti Ukuran Shape >=0
   public void changeSize(int newDiameter)  
   {  
     erase();  
     diameter = newDiameter;  
     draw();  
   }  
   // "red", "yellow", "blue", "green", "pink" and "black"  
   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);  
     }  
   }  
 }  

Square :



import java.awt.*;  
 public class Square  
 {  
   private int size;  
   private int xPosition;  
   private int yPosition;  
   private String color;  
   private boolean isVisible;  
   // New Square
   public Square()  
   {  
     size = 100;  
     xPosition = 260;  
     yPosition = 200;  
     color = "red";  
     isVisible = false;  
   }  
   // Make Shape Visible
   public void makeVisible()  
   {  
     isVisible = true;  
     draw();  
   }  
   // Make Shape Invisible
   public void makeInvisible()  
   {  
     erase();  
     isVisible = false;  
   }  
   // Geser Kanan
   public void moveRight()  
   {  
     moveHorizontal(20);  
   }  
   // Geser Kiri
   public void moveLeft()  
   {  
     moveHorizontal(-20);  
   }  
   // Geser Atas
   public void moveUp()  
   {  
     moveVertical(-20);  
   }  
   // Geser Bawah
   public void moveDown()  
   {  
     moveVertical(20);  
   }  
   // Geser Horizontal dengan banyak pixel
   public void moveHorizontal(int distance)  
   {  
     erase();  
     xPosition += distance;  
     draw();  
   }  
   // Geser Vertikal dengan banyak pixel
   public void moveVertical(int distance)  
   {  
     erase();  
     yPosition += distance;  
     draw();  
   }  
   // Ganti Ukuran Shape >=0
   public void changeSize(int newSize)  
   {  
     erase();  
     size = newSize;  
     draw();  
   }  
   // "red", "yellow", "blue", "green", "pink" and "black"  
   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);  
     }  
   }  
 } 

Triangle :



import java.awt.*;  
 public class Triangle  
 {  
   private int height;  
   private int width;  
   private int xPosition;  
   private int yPosition;  
   private String color;  
   private boolean isVisible;  
   // New Triangle
   public Triangle()  
   {  
     height = 30;  
     width = 40;  
     xPosition = 50;  
     yPosition = 15;  
     color = "blue";  
     isVisible = false;  
   }  
   // Make Shape Visible
   public void makeVisible()  
   {  
     isVisible = true;  
     draw();  
   }  
   // Make Shape Invisible
   public void makeInvisible()  
   {  
     erase();  
     isVisible = false;  
   }  
   // Geser Kanan
   public void moveRight()  
   {  
     moveHorizontal(20);  
   }  
   // Geser Kiri 
   public void moveLeft()  
   {  
     moveHorizontal(-20);  
   }  
   // Geser Atas
   public void moveUp()  
   {  
     moveVertical(-20);  
   }  
   // Geser Bawah
   public void moveDown()  
   {  
     moveVertical(20);  
   }  
   // Geser Horizontal dengan banyak pixel
   public void moveHorizontal(int distance)  
   {  
     erase();  
     xPosition += distance;  
     draw();  
   }  
   // Geser Vertikal dengan banyak pixel
   public void moveVertical(int distance)  
   {  
     erase();  
     yPosition += distance;  
     draw();  
   }  
   // Ganti Ukuran Shape >=0
   public void changeSize(int newHeight, int newWidth)  
   {  
     erase();  
     height = newHeight;  
     width = newWidth;  
     draw();  
   }  
   // "red", "yellow", "blue", "green", "pink" and "black"  
   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);  
     }  
   }  
 }  

Rectangle :


import java.awt.*;  
 public class Rectangle  
 {  
   private int P;  
   private int L;
   private int xPosition;  
   private int yPosition;  
   private String color;  
   private boolean isVisible;  
   // New Square
   public Recta()  
   {  
     P = 100; 
     L = 50;
     xPosition = 260;  
     yPosition = 200;  
     color = "red";  
     isVisible = false;  
   }  
   // Make Shape Visible
   public void makeVisible()  
   {  
     isVisible = true;  
     draw();  
   }  
   // Make Shape Invisible
   public void makeInvisible()  
   {  
     erase();  
     isVisible = false;  
   }  
   // Geser Kanan
   public void moveRight()  
   {  
     moveHorizontal(20);  
   }  
   // Geser Kiri
   public void moveLeft()  
   {  
     moveHorizontal(-20);  
   }  
   // Geser Atas
   public void moveUp()  
   {  
     moveVertical(-20);  
   }  
   // Geser Bawah
   public void moveDown()  
   {  
     moveVertical(20);  
   }  
   // Geser Horizontal dengan banyak pixel
   public void moveHorizontal(int distance)  
   {  
     erase();  
     xPosition += distance;  
     draw();  
   }  
   // Geser Vertikal dengan banyak pixel
   public void moveVertical(int distance)  
   {  
     erase();  
     yPosition += distance;  
     draw();  
   }  
   // Ganti Ukuran Shape >=0
   public void changeSize(int newP,int newL)  
   {  
     erase();  
     P = newP; 
     L = newL;
     draw();  
   }  
   // "red", "yellow", "blue", "green", "pink" and "black"  
   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, P, L));  
       canvas.wait(10);  
     }  
   }  
   private void erase()  
   {  
     if(isVisible) {  
       Canvas canvas = Canvas.getCanvas();  
       canvas.erase(this);  
     }  
   }  
 } 

Tidak ada komentar:

Posting Komentar

Batman Begins - Help Select