Hey guys! In this post I am going to show what I have been working on this week.
I am asked to draw a house from 2D Shapes compiled in BlueJ. In this project, I use 6 classes, which are:
I am asked to draw a house from 2D Shapes compiled in BlueJ. In this project, I use 6 classes, which are:
1. Picture
This is the main method for displaying the house picture I have designed. /*
* Make your Picture here.
*
* @author Elkana Hans Widersen
* @version (16/9/2018)
*/
public class Picture{
private Rect BackWall, BorderWindow, Roof, LeftRoofBorder, FrontWall, DoorBorder, Land;
private Triangle SideRoof, UpperWall, RightRoofBorder;
private Square Window;
private Circle WindowBorder, RightWindow, Sun;
public void draw(){
Land = new Rect();
Land.moveHorizontal(-50);
Land.moveVertical(220);
Land.changeSize(300,30);
Land.makeVisible();
Land.changeColor("green");
Sun = new Circle();
Sun.moveHorizontal(190);
Sun.moveVertical(0);
Sun.changeSize(50);
Sun.makeVisible();
Sun.changeColor("yellow");
BackWall = new Rect();
BackWall.moveHorizontal(0);
BackWall.moveVertical(140);
BackWall.changeSize(120,80);
BackWall.makeVisible();
BackWall.changeColor("red");
BorderWindow = new Rect();
BorderWindow.moveHorizontal(20);
BorderWindow.moveVertical(160);
BorderWindow.changeSize(29,35);
BorderWindow.makeVisible();
Window = new Square();
Window.moveHorizontal(22);
Window.moveVertical(165);
Window.changeSize(25);
Window.makeVisible();
Window.changeColor("blue");
SideRoof = new Triangle();
SideRoof.moveHorizontal(10);
SideRoof.moveVertical(115);
SideRoof.changeSize(60,40);
SideRoof.makeVisible();
SideRoof.changeColor("black");
Roof = new Rect();
Roof.moveHorizontal(10);
Roof.moveVertical(80);
Roof.changeSize(140,60);
Roof.makeVisible();
Roof.changeColor("black");
LeftRoofBorder = new Rect();
LeftRoofBorder.moveHorizontal(-15);
LeftRoofBorder.moveVertical(140);
LeftRoofBorder.changeSize(155,8);
LeftRoofBorder.makeVisible();
LeftRoofBorder.changeColor("blue");
FrontWall = new Rect();
FrontWall.moveHorizontal(120);
FrontWall.moveVertical(130);
FrontWall.changeSize(60,90);
FrontWall.makeVisible();
FrontWall.changeColor("red");
RightRoofBorder = new Triangle();
RightRoofBorder.moveHorizontal(150);
RightRoofBorder.moveVertical(115);
RightRoofBorder.changeSize(50,80);
RightRoofBorder.makeVisible();
RightRoofBorder.changeColor("blue");
UpperWall = new Triangle();
UpperWall.moveHorizontal(150);
UpperWall.moveVertical(127);
UpperWall.changeSize(38,60);
UpperWall.makeVisible();
UpperWall.changeColor("red");
WindowBorder = new Circle();
WindowBorder.moveHorizontal(164);
WindowBorder.moveVertical(110);
WindowBorder.changeSize(30);
WindowBorder.makeVisible();
WindowBorder.changeColor("yellow");
RightWindow = new Circle();
RightWindow.moveHorizontal(166);
RightWindow.moveVertical(112);
RightWindow.changeSize(26);
RightWindow.makeVisible();
DoorBorder = new Rect();
DoorBorder.moveHorizontal(135);
DoorBorder.moveVertical(160);
DoorBorder.changeSize(30,60);
DoorBorder.makeVisible();
DoorBorder.changeColor("magenta");
}
public void setBlackAndWhite(){
if(BackWall != null){ // only if it's painted already...
Land.changeColor("black");
Sun.changeColor("black");
BackWall.changeColor("black");
LeftRoofBorder.changeColor("black");
BorderWindow.changeColor("black");
WindowBorder.changeColor("black");
FrontWall.changeColor("black");
RightRoofBorder.changeColor("black");
UpperWall.changeColor("black");
Window.changeColor("white");
RightWindow.changeColor("white");
DoorBorder.changeColor("white");
}
}
public void setColor(){
if(BackWall != null){ // only if it's painted already...
Land.changeColor("green");
Sun.changeColor("yellow");
BackWall.changeColor("red");
LeftRoofBorder.changeColor("blue");
FrontWall.changeColor("red");
RightRoofBorder.changeColor("blue");
UpperWall.changeColor("red");
BorderWindow.changeColor("yellow");
WindowBorder.changeColor("yellow");
Window.changeColor("blue");
RightWindow.changeColor("blue");
DoorBorder.changeColor("magenta");
}
}
}
2. Canvas
/*
* Declaration of methods here.
*
* @author Elkana Hans Widersen
* @version (16/9/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("BlueJ Shapes Demo", 300, 300,
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) {
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
graphic.setColor(Color.black);
}
public void wait(int millisecond){
try{
Thread.sleep(millisecond);
}
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);
}
}
}
3. Circle
import java.awt.*;
import java.awt.geom.*;
/*
* Declaration of the Circle here.
*
* @author Elkana Hans Widersen
* @version (16/9/2018)
*/
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);
}
}
}
4. Square
/*
* Declaration of the Square here.
*
* @author Elkana Hans Widersen
* @version (16/9/2018)
*/
import java.awt.*;
import java.awt.geom.*;
public class Square{
private int side;
private int xPosition;
private int yPosition;
private String color;
private boolean isVisible;
public Square(){
side = 10;
xPosition = 50;
yPosition = 50;
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 changeColor(String newColor){
color = newColor;
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();
side = newSize;
draw();
}
private void draw(){
if(isVisible) {
Canvas canvas = Canvas.getCanvas();
canvas.draw(this, color,
new Rectangle(xPosition, yPosition, side, side));
canvas.wait(10);
}
}
private void erase(){
if(isVisible) {
Canvas canvas = Canvas.getCanvas();
canvas.erase(this);
}
}
}
5. Triangle
import java.awt.*;
/*
* Declaration of the Triangle here.
*
* @author Elkana Hans Widersen
* @version (16/9/2018)
*/
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);
}
}
}
6. Rectangle
/*
* Declaration of the Rectangle here.
*
* @author Elkana Hans Widersen
* @version (16/9/2018)
*/
import java.awt.*;
import java.awt.geom.*;
public class Rect{
private int length;
private int width;
private int xPosition;
private int yPosition;
private String color;
private boolean isVisible;
public Rect(){
length = 20;
width = 10;
xPosition = 50;
yPosition = 50;
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 changeColor(String newColor){
color = newColor;
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 newLength, int newWidth){
erase();
length = newLength;
width = newWidth;
draw();
}
private void draw(){
if(isVisible) {
Canvas canvas = Canvas.getCanvas();
canvas.draw(this, color,
new Rectangle(xPosition, yPosition, length, width));
canvas.wait(10);
}
}
private void erase(){
if(isVisible) {
Canvas canvas = Canvas.getCanvas();
canvas.erase(this);
}
}
}
Komentar
Posting Komentar