TUGAS 2 PEMROGRAMAN BERORIENTASI OBJEK
Nama : Atika Rizki Nurakhmah
Nrp : 05111740000015
Kelas : PBO -A
Kali ini saya mendapatkan tugas untuk membuat gambar sederhana menggunakan BlueJ. Setelah membaca berbagai sumber dan melihat tutorial di Youtube, akhirnya saya berhasil membuat sebuah gambar. (Ayeeee!).
Untuk membuat gambar sederhana versi saya, saya membuat 6 Class, yaitu :
- Pic
- Canvas
- Rectangular
- Circle
- Triangle
- Square
Berikut adalah Source Code nya
- Class Pic
/** * Tempat menyusun semua Class menjadi sebuah gambar * * @author (Atika Rizki Nurakhmah / 05111740000015) * @version (02.01/tugas2/2018) */ public class Pic { private Circle bulan; private Circle bulan1; private Circle bintang1; private Circle bintang2; private Circle bintang3; private Circle bintang4; private Circle bintang5; private Circle bintang6; private Circle bintang7; private Circle bintang8; private Square rumah1; private Square rumah2; private Rectangular pintu; private Rectangular pintu1; private Square jendela1; private Square jendela2; private Square jendela3; private Square jendela4; private Square jendela5; private Square jendela6; private Triangle atap1; private Triangle atap2; private Circle pohon1; private Circle pohon2; private Circle pohon3; private Rectangular batang; private Rectangular rumput; private Rectangular tanah; private Triangle rumput1; private Triangle rumput2; private Triangle rumput3; private Triangle rumput4; private Triangle rumput5; private Triangle rumput6; private Triangle rumput7; private Triangle rumput8; private Rectangular jalan; private Circle PeganganPintu1; private Circle PeganganPintu2; public Pic () { } public void draw () { bulan = new Circle(); bulan.moveVertical(-100); bulan.moveHorizontal(-60); bulan.changeSize (80); bulan.makeVisible(); bulan1 = new Circle (); bulan1.moveVertical(-100); bulan1.changeSize (80); bulan1.moveHorizontal(-30); bulan1.changeColor("black"); bulan1.makeVisible(); bintang1 = new Circle (); bintang1.moveVertical(-100); bintang1.changeColor("yellow"); bintang1.changeSize (15); bintang1.moveHorizontal(100); bintang1.makeVisible(); bintang2 = new Circle (); bintang2.moveVertical(-100); bintang2.changeColor("yellow"); bintang2.changeSize (10); bintang2.moveHorizontal(250); bintang2.makeVisible(); bintang3 = new Circle (); bintang3.moveVertical(-100); bintang3.changeColor("yellow"); bintang3.changeSize (15); bintang3.moveHorizontal(400); bintang3.makeVisible(); bintang4 = new Circle (); bintang4.moveVertical(-60); bintang4.changeColor("yellow"); bintang4.changeSize (10); bintang4.moveHorizontal(175); bintang4.makeVisible(); bintang5 = new Circle (); bintang5.moveVertical(-60); bintang5.changeColor("yellow"); bintang5.changeSize (15); bintang5.moveHorizontal(275); bintang5.makeVisible(); bintang6 = new Circle (); bintang6.moveVertical(-50); bintang6.changeColor("yellow"); bintang6.changeSize (10); bintang6.moveHorizontal(425); bintang6.makeVisible(); bintang7 = new Circle (); bintang7.moveVertical(-40); bintang7.changeColor("yellow"); bintang7.changeSize (15); bintang7.moveHorizontal(100); bintang7.makeVisible(); bintang8 = new Circle (); bintang8.moveVertical(-40); bintang8.changeColor("yellow"); bintang8.changeSize (10); bintang8.moveHorizontal(350); bintang8.makeVisible(); rumput = new Rectangular (); rumput.changeColor("green"); rumput.moveVertical(400); rumput.moveHorizontal(-100); rumput.changeSize(600,50); rumput.makeVisible(); rumah1 = new Square(); rumah1.changeColor("blue"); rumah1.moveVertical(250); rumah1.moveHorizontal (-20); rumah1.changeSize(200); rumah1.makeVisible(); rumah2 = new Square(); rumah2.changeSize(120); rumah2.changeColor("blue"); rumah2.moveVertical(330); rumah2.moveHorizontal(175); rumah2.makeVisible(); atap1 = new Triangle (); atap1.changeColor("red"); atap1.changeSize(100,202); atap1.moveVertical(240); atap1.moveHorizontal(80); atap1.makeVisible(); atap2 = new Triangle (); atap2.changeColor("red"); atap2.changeSize(68,120); atap2.moveVertical(353); atap2.moveHorizontal(239); atap2.makeVisible(); jendela1 = new Square(); jendela1.changeSize(40); jendela1.moveVertical(270); jendela1.makeVisible(); jendela2 = new Square(); jendela2.changeSize(40); jendela2.moveVertical(270); jendela2.moveHorizontal(60); jendela2.makeVisible(); jendela3 = new Square(); jendela3.changeSize(40); jendela3.moveVertical(270); jendela3.moveHorizontal(120); jendela3.makeVisible(); jendela4 = new Square(); jendela4.changeSize(40); jendela4.moveVertical(350); jendela4.moveHorizontal(10); jendela4.makeVisible(); jendela5 = new Square(); jendela5.changeSize(40); jendela5.moveVertical(350); jendela5.moveHorizontal(110); jendela5.makeVisible(); jendela6 = new Square(); jendela6.changeSize(40); jendela6.moveVertical(340); jendela6.moveHorizontal(220); jendela6.makeVisible(); pintu = new Rectangular (); pintu.changeSize(40,60); pintu.changeColor ("pink"); pintu.moveHorizontal(60); pintu.moveVertical(390); pintu.makeVisible(); pintu1 = new Rectangular (); pintu1.changeSize(40,60); pintu1.changeColor ("pink"); pintu1.moveHorizontal(245); pintu1.moveVertical(390); pintu1.makeVisible(); batang = new Rectangular(); batang.changeColor("red"); batang.changeSize(30,200); batang.moveHorizontal(365); batang.moveVertical(200); batang.makeVisible(); pohon1 = new Circle(); pohon1.moveHorizontal(310); pohon1.moveVertical(100); pohon1.changeColor("green"); pohon1.changeSize(80); pohon1.makeVisible(); pohon2 = new Circle(); pohon2.moveHorizontal(370); pohon2.moveVertical(100); pohon2.changeColor("green"); pohon2.changeSize(80); pohon2.makeVisible(); pohon3 = new Circle(); pohon3.moveHorizontal(340); pohon3.moveVertical(50); pohon3.changeColor("green"); pohon3.changeSize(80); pohon3.makeVisible(); jalan=new Rectangular(); jalan.moveVertical(450); jalan.moveHorizontal(-100); jalan.changeColor("gray"); jalan.changeSize(600,50); jalan.makeVisible(); rumput1=new Triangle(); rumput1.changeColor("green"); rumput1.changeSize(20,30); rumput1.moveHorizontal(-87); rumput1.moveVertical(470); rumput1.makeVisible(); rumput2=new Triangle(); rumput2.changeColor("green"); rumput2.changeSize(50,30); rumput2.moveHorizontal(-60); rumput2.moveVertical(440); rumput2.makeVisible(); rumput3=new Triangle(); rumput3.changeColor("green"); rumput3.changeSize(30,30); rumput3.moveHorizontal(-35); rumput3.moveVertical(460); rumput3.makeVisible(); rumput4=new Triangle(); rumput4.moveHorizontal(325); rumput4.moveVertical(450); rumput4.changeColor("green"); rumput4.changeSize(40,60); rumput4.makeVisible(); rumput5=new Triangle(); rumput5.moveHorizontal(365); rumput5.moveVertical(430); rumput5.changeColor("green"); rumput5.changeSize(60,40); rumput5.makeVisible(); rumput6=new Triangle(); rumput6.moveHorizontal(400); rumput6.moveVertical(460); rumput6.changeColor("green"); rumput6.changeSize(30,60); rumput6.makeVisible(); rumput7=new Triangle(); rumput7.moveHorizontal(435); rumput7.moveVertical(430); rumput7.changeColor("green"); rumput7.changeSize(60,50); rumput7.makeVisible(); rumput8=new Triangle(); rumput8.moveHorizontal(480); rumput8.moveVertical(450); rumput8.changeColor("green"); rumput8.changeSize(50,50); rumput8.makeVisible(); PeganganPintu1 = new Circle(); PeganganPintu1.changeColor("black"); PeganganPintu1.changeSize(10); PeganganPintu1.moveVertical(375); PeganganPintu1.moveHorizontal(87); PeganganPintu1.makeVisible(); PeganganPintu2 = new Circle(); PeganganPintu2.changeColor("black"); PeganganPintu2.changeSize(10); PeganganPintu2.moveVertical(375); PeganganPintu2.moveHorizontal(273); PeganganPintu2.makeVisible(); } }
- Class Canvas
/** * Berisi fungsi-fungsi umum untuk merangkai gambar * * @author (Atika Rizki Nurakhmah / 05111740000015) * @version (02.01/tugas2/2018) */ 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("Make a Picture using BlueJ", 600, 600, Color.black); } 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); // 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 if(colorString.equals("pink")) graphic.setColor(Color.pink); else if(colorString.equals("gray")) graphic.setColor(Color.gray); 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); } } }
- Class Rectangular
/** * Class untuk membuat bentuk Persegi Panjang beserta fungsi untuk menggeser, merubah warna dan ukuran * * @author (Atika Rizki Nurakhmah / 05111740000015) * @version (02.03/tugas2/2018) */ import java.awt.*; public class Rectangular { private int panjang; private int lebar; private int xPosition; private int yPosition; private String color; private boolean isVisible; /** * Constructor for objects of class Rectangular */ public Rectangular() { panjang = 300; lebar = 150; xPosition = 100; yPosition = 100; 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 newPanjang, int newLebar) { erase(); panjang = newPanjang; lebar=newLebar; draw(); } public void changeColor(String newColor) { color = newColor; draw(); } private void draw() { if(isVisible) { Canvas canvas = Canvas.getCanvas(); canvas.draw(this, color, new Rectangle.Double(xPosition, yPosition, panjang, lebar)); canvas.wait(10); } } private void erase() { if(isVisible) { Canvas canvas = Canvas.getCanvas(); canvas.erase(this); } } }
- Class Circle
/** * Class untuk membuat bentuk Lingkaran beserta fungsi untuk menggeser, merubah warna dan ukuran * * @author (Atika Rizki Nurakhmah / 05111740000015) * @version (02.04/tugas2/2018) */ 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; /** * Constructor for objects of class Circle */ public Circle() { diameter = 50; xPosition = 100; yPosition = 140; 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 changeSize(int newDiameter) { erase(); diameter = newDiameter; draw(); } /** * Change the color. Valid colors are "red", "yellow", "blue", "green", * "magenta" 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); } } }
- Class Triangle
/** * Class untuk membuat bentuk Segitiga beserta fungsi untuk menggeser, merubah warna dan ukuran * * @author (Atika Rizki Nurakhmah / 05111740000015) * @version (02.05/tugas2/2018) */ import java.awt.*; 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 = 100; width = 200; xPosition = 100; yPosition = 10; color = "blue"; 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); } } }
- Class Rectangular
/** * Class untuk membuat bentuk Persegi beserta fungsi untuk menggeser, merubah warna dan ukuran * * @author (Atika Rizki Nurakhmah / 05111740000015) * @version (02.06/tugas2/2018) */ import java.awt.*; public class Square { // instance variables - replace the example below with your own private int size; private int xPosition; private int yPosition; private String color; private boolean isVisible; /** * Constructor for objects of class Square */ public Square() { size = 100; xPosition = 100; yPosition = 100; 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 newSize) { erase(); size = newSize; draw(); } /** * Change the color. Valid colors are "red", "yellow", "blue", "green", * "magenta" 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.Double(xPosition, yPosition, size, size)); canvas.wait(10); } } private void erase() { if(isVisible) { Canvas canvas = Canvas.getCanvas(); canvas.erase(this); } } }
Nah, begitulah tugas saya. Sekian ulasan saya kali ini, saya pamit undur diri. Terima Kasih dan sampai bertemu di ulasan selanjutnya :)))))))))
Tidak ada komentar:
Posting Komentar