Senin, 17 September 2018

PBO A - Menggambar Pemandangan

Pada kesempatan kali ini saya berkesempatan membuat lukisa pemandangan melalui pemrograman berbasis java. berikut adalah hasil dari compile codingan saya:
dan berikut adalah source codenya:

1. Canvas
<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>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(&quot;BlueJ Shapes Demo&quot;, 1000, 800, Color.white); 
    } 
    canvasSingleton.setVisible(true); 
    return canvasSingleton; 
   } 
   private JFrame frame; 
   private CanvasPane canvas; 
   private Graphics2D graphic; 
   private Color backgroundColour; 
   private Image canvasImage; 
   private List objects; 
   private HashMap 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(); 
    shapes = new HashMap(); 
   } 
   public void setVisible(boolean visible) 
   { 
    if(graphic == null) {     
     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);
    shapes.remove(referenceObject); 
    redraw(); 
   }   
   public void setForegroundColor(String colorString) 
   { 
    if(colorString.equals(&quot;red&quot;)) 
     graphic.setColor(Color.red); 
    else if(colorString.equals(&quot;black&quot;)) 
     graphic.setColor(Color.black); 
    else if(colorString.equals(&quot;blue&quot;)) 
     graphic.setColor(Color.blue); 
    else if(colorString.equals(&quot;yellow&quot;)) 
     graphic.setColor(Color.yellow); 
    else if(colorString.equals(&quot;green&quot;)) 
     graphic.setColor(Color.green); 
    else if(colorString.equals(&quot;magenta&quot;)) 
     graphic.setColor(Color.magenta); 
    else if(colorString.equals(&quot;white&quot;)) 
     graphic.setColor(Color.white); 
    else if(colorString.equals(&quot;light brown&quot;)) 
     graphic.setColor(new Color(153,102,0)); 
    else if(colorString.equals(&quot;brown&quot;)) 
     graphic.setColor(new Color(102,51,0)); 
    else if(colorString.equals(&quot;grey&quot;)) 
     graphic.setColor(new Color(190,190,190)); 
    else if(colorString.equals(&quot;light blue&quot;)) 
     graphic.setColor(new Color(0,191,255)); 
    else 
     graphic.setColor(Color.black); 
   }   
   public void wait(int milliseconds) 
   { 
    try 
    { 
     Thread.sleep(milliseconds); 
    }   
    catch (Exception e) 
    {   
    } 
   } 
   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); 
    } 
   } 
  } 

</code></pre>

2. Triangle
<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>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 = 40; 
    xPosition = 50; 
    yPosition = 15; 
    color = &quot;green&quot;; 
    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 &lt; 0)   
    { 
     delta = -1; 
     distance = -distance; 
    } 
    else   
    { 
     delta = 1; 
    } 
    for(int i = 0; i &lt; distance; i++) 
    { 
     xPosition += delta; 
     draw(); 
    } 
   }   
   public void slowMoveVertical(int distance) 
   { 
    int delta; 
    if(distance &lt; 0)   
    { 
     delta = -1; 
     distance = -distance; 
    } 
    else   
    { 
     delta = 1; 
    } 
    for(int i = 0; i &lt; 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); 
    } 
   } 
  } 
</code></pre>

3.Circle

<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>import java.awt.*;
  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 = &quot;blue&quot;; 
       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 &lt; 0)   
       { 
         delta = -1; 
         distance = -distance; 
       } 
       else   
       { 
         delta = 1; 
       } 
       for(int i = 0; i &lt; distance; i++) 
       { 
         xPosition += delta; 
         draw(); 
       } 
   }   
   public void slowMoveVertical(int distance) 
   { 
       int delta; 
       if(distance &lt; 0)   
       { 
         delta = -1; 
         distance = -distance; 
       } 
       else   
       { 
         delta = 1; 
       } 
       for(int i = 0; i &lt; 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); 
       } 
    } 
  } 
</code></pre>

4. Box

<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>import java.awt.*; 
  public class Box 
  { 
   private int width; 
   private int height; 
   private int xPosition; 
   private int yPosition; 
   private String color; 
   private boolean isVisible;
   public Box() 
   { 
    width = 30; 
    height = 30; 
    xPosition = 60; 
    yPosition = 50; 
    color = &quot;red&quot;; 
    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 &lt; 0)   
    { 
     delta = -1; 
     distance = -distance; 
    } 
    else   
    { 
     delta = 1; 
    } 
    for(int i = 0; i &lt; distance; i++) 
    { 
     xPosition += delta; 
     draw(); 
    } 
   }   
   public void slowMoveVertical(int distance) 
   { 
    int delta; 
    if(distance &lt; 0)   
    { 
     delta = -1; 
     distance = -distance; 
    } 
    else   
    { 
     delta = 1; 
    } 
    for(int i = 0; i &lt; distance; i++) 
    { 
     yPosition += delta; 
     draw(); 
    } 
   }   
   public void changeWidth(int newWidth) 
   { 
    erase(); 
    width = newWidth; 
    draw(); 
   }   
   public void changeHeight(int newHeight) 
   { 
    erase(); 
    height = newHeight; 
    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, width, height)); 
     canvas.wait(10); 
    } 
   }   
   private void erase() 
   { 
    if(isVisible) { 
         Canvas canvas = Canvas.getCanvas(); 
         canvas.erase(this); 
       } 
    } 
  } 
</code></pre>

5. Picture
<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>  public class Picture 
  { 
   private Box wall; 
   private Box door; 
   private Box window; 
   private Triangle roof; 
   private Circle sun;   
   private Box ground; 
   private Box road; 
   private Circle cloud; 
   private Triangle mountain; 
   public Picture() 
   { 
   } 
   public void draw() 
   {
    ground = new Box(); 
    ground.changeColor(&quot;light brown&quot;); 
    ground.moveHorizontal(-200); 
    ground.moveVertical(420); 
    ground.changeWidth(1600); 
    ground.changeHeight(1200); 
    ground.makeVisible(); 
   
    sun = new Circle(); 
    sun.changeColor(&quot;yellow&quot;); 
    sun.moveHorizontal(400); 
    sun.moveVertical(70); 
    sun.changeSize(150); 
    sun.makeVisible(); 
   
    mountain = new Triangle(); 
    mountain.changeColor(&quot;green&quot;); 
    mountain.moveHorizontal(160); 
    mountain.moveVertical(70); 
    mountain.changeSize(400, 700);   
    mountain.makeVisible(); 
   
    mountain = new Triangle(); 
    mountain.changeColor(&quot;green&quot;); 
    mountain.moveHorizontal(800); 
    mountain.moveVertical(70); 
    mountain.changeSize(400, 700);   
    mountain.makeVisible();
   
    wall = new Box(); 
    wall.changeColor(&quot;white&quot;); 
    wall.moveVertical(400); 
    wall.moveHorizontal(50); 
    wall.changeWidth(300); 
    wall.changeHeight(200); 
    wall.makeVisible(); 
   
    window = new Box(); 
    window.changeColor(&quot;yellow&quot;); 
    window.moveHorizontal(260); 
    window.moveVertical(500); 
    window.changeWidth(60); 
    window.changeHeight(60); 
    window.makeVisible();
   
    window = new Box(); 
    window.changeColor(&quot;yellow&quot;); 
    window.moveHorizontal(60); 
    window.moveVertical(500); 
    window.changeWidth(60); 
    window.changeHeight(60); 
    window.makeVisible(); 
   
    door = new Box(); 
    door.changeColor(&quot;red&quot;); 
    door.moveHorizontal(126); 
    door.moveVertical(500); 
    door.changeWidth(50); 
    door.changeHeight(100); 
    door.makeVisible(); 
       
    door = new Box(); 
    door.changeColor(&quot;red&quot;); 
    door.moveHorizontal(200); 
    door.moveVertical(500); 
    door.changeWidth(50); 
    door.changeHeight(100); 
    door.makeVisible(); 
   
    door = new Box(); 
    door.changeColor(&quot;brown&quot;); 
    door.moveHorizontal(626); 
    door.moveVertical(500); 
    door.changeWidth(50); 
    door.changeHeight(160); 
    door.makeVisible();
   
    road = new Box(); 
    road.changeColor(&quot;grey&quot;); 
    road.moveHorizontal(430); 
    road.moveVertical(435); 
    road.changeWidth(80); 
    road.changeHeight(300); 
    road.makeVisible(); 
   
    roof = new Triangle();   
    roof.changeColor(&quot;red&quot;); 
    roof.changeSize(100, 400); 
    roof.moveHorizontal(205); 
    roof.moveVertical(350); 
    roof.makeVisible();   
   
    roof = new Triangle();   
    roof.changeColor(&quot;red&quot;); 
    roof.changeSize(100, 400); 
    roof.moveHorizontal(205); 
    roof.moveVertical(320); 
    roof.makeVisible(); 
   
    cloud = new Circle(); 
    cloud.changeColor(&quot;grey&quot;); 
    cloud.moveHorizontal(100); 
    cloud.moveVertical(0); 
    cloud.changeSize(45); 
    cloud.makeVisible(); 
   
    cloud = new Circle(); 
    cloud.changeColor(&quot;grey&quot;); 
    cloud.moveHorizontal(0); 
    cloud.moveVertical(0); 
    cloud.changeSize(45); 
    cloud.makeVisible(); 
   
    cloud = new Circle(); 
    cloud.changeColor(&quot;grey&quot;); 
    cloud.moveHorizontal(30); 
    cloud.moveVertical(-20); 
    cloud.changeSize(80); 
    cloud.makeVisible(); 
   
    cloud = new Circle(); 
    cloud.changeColor(&quot;grey&quot;); 
    cloud.moveHorizontal(720); 
    cloud.moveVertical(0); 
    cloud.changeSize(45); 
    cloud.makeVisible(); 
   
    cloud = new Circle(); 
    cloud.changeColor(&quot;grey&quot;); 
    cloud.moveHorizontal(815); 
    cloud.moveVertical(0); 
    cloud.changeSize(45); 
    cloud.makeVisible(); 
   
    cloud = new Circle(); 
    cloud.changeColor(&quot;grey&quot;); 
    cloud.moveHorizontal(750); 
    cloud.moveVertical(-20); 
    cloud.changeSize(80); 
    cloud.makeVisible(); 
   
    cloud = new Circle(); 
    cloud.changeColor(&quot;green&quot;); 
    cloud.moveHorizontal(640); 
    cloud.moveVertical(440); 
    cloud.changeSize(110); 
    cloud.makeVisible();
   } 
  } 
</code></pre>


Tidak ada komentar:

Posting Komentar