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("BlueJ Shapes Demo", 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("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 if(colorString.equals("light brown"))
graphic.setColor(new Color(153,102,0));
else if(colorString.equals("brown"))
graphic.setColor(new Color(102,51,0));
else if(colorString.equals("grey"))
graphic.setColor(new Color(190,190,190));
else if(colorString.equals("light blue"))
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 = "green";
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 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 = "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 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 = "red";
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 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("light brown");
ground.moveHorizontal(-200);
ground.moveVertical(420);
ground.changeWidth(1600);
ground.changeHeight(1200);
ground.makeVisible();
sun = new Circle();
sun.changeColor("yellow");
sun.moveHorizontal(400);
sun.moveVertical(70);
sun.changeSize(150);
sun.makeVisible();
mountain = new Triangle();
mountain.changeColor("green");
mountain.moveHorizontal(160);
mountain.moveVertical(70);
mountain.changeSize(400, 700);
mountain.makeVisible();
mountain = new Triangle();
mountain.changeColor("green");
mountain.moveHorizontal(800);
mountain.moveVertical(70);
mountain.changeSize(400, 700);
mountain.makeVisible();
wall = new Box();
wall.changeColor("white");
wall.moveVertical(400);
wall.moveHorizontal(50);
wall.changeWidth(300);
wall.changeHeight(200);
wall.makeVisible();
window = new Box();
window.changeColor("yellow");
window.moveHorizontal(260);
window.moveVertical(500);
window.changeWidth(60);
window.changeHeight(60);
window.makeVisible();
window = new Box();
window.changeColor("yellow");
window.moveHorizontal(60);
window.moveVertical(500);
window.changeWidth(60);
window.changeHeight(60);
window.makeVisible();
door = new Box();
door.changeColor("red");
door.moveHorizontal(126);
door.moveVertical(500);
door.changeWidth(50);
door.changeHeight(100);
door.makeVisible();
door = new Box();
door.changeColor("red");
door.moveHorizontal(200);
door.moveVertical(500);
door.changeWidth(50);
door.changeHeight(100);
door.makeVisible();
door = new Box();
door.changeColor("brown");
door.moveHorizontal(626);
door.moveVertical(500);
door.changeWidth(50);
door.changeHeight(160);
door.makeVisible();
road = new Box();
road.changeColor("grey");
road.moveHorizontal(430);
road.moveVertical(435);
road.changeWidth(80);
road.changeHeight(300);
road.makeVisible();
roof = new Triangle();
roof.changeColor("red");
roof.changeSize(100, 400);
roof.moveHorizontal(205);
roof.moveVertical(350);
roof.makeVisible();
roof = new Triangle();
roof.changeColor("red");
roof.changeSize(100, 400);
roof.moveHorizontal(205);
roof.moveVertical(320);
roof.makeVisible();
cloud = new Circle();
cloud.changeColor("grey");
cloud.moveHorizontal(100);
cloud.moveVertical(0);
cloud.changeSize(45);
cloud.makeVisible();
cloud = new Circle();
cloud.changeColor("grey");
cloud.moveHorizontal(0);
cloud.moveVertical(0);
cloud.changeSize(45);
cloud.makeVisible();
cloud = new Circle();
cloud.changeColor("grey");
cloud.moveHorizontal(30);
cloud.moveVertical(-20);
cloud.changeSize(80);
cloud.makeVisible();
cloud = new Circle();
cloud.changeColor("grey");
cloud.moveHorizontal(720);
cloud.moveVertical(0);
cloud.changeSize(45);
cloud.makeVisible();
cloud = new Circle();
cloud.changeColor("grey");
cloud.moveHorizontal(815);
cloud.moveVertical(0);
cloud.changeSize(45);
cloud.makeVisible();
cloud = new Circle();
cloud.changeColor("grey");
cloud.moveHorizontal(750);
cloud.moveVertical(-20);
cloud.changeSize(80);
cloud.makeVisible();
cloud = new Circle();
cloud.changeColor("green");
cloud.moveHorizontal(640);
cloud.moveVertical(440);
cloud.changeSize(110);
cloud.makeVisible();
}
}
</code></pre>