Posted on Leave a comment

Solution to ProgramHeirarchy – Assignment 2

[code lang=”java”]
/*
* File: ProgramHierarchy.java
* Name:
* Section Leader:
* —————————
* This file is the starter file for the ProgramHierarchy problem.
*/

import acm.graphics.*;
import acm.program.*;
import java.awt.*;

public class ProgramHierarchy extends GraphicsProgram {
// width of the box
private static final int BOX_WIDTH = 175;

//height of the box
private static final int BOX_HEIGHT = 45;

public void run() {

//middle point of the window
double middle = getWidth()/2;

//height window middle
double height_center = getHeight()/2;

//middle of the box itself
double box_mid = BOX_WIDTH/2;

// half the box height
double box_half = BOX_HEIGHT/2;

// base of top square = height_center -40
double base_top= height_center -40 ;

//roof of bottom boxes
double roof_bottom = height_center + 40 ;

/*
* The boxes here
*/

// top rect
GRect top = new GRect(middle-box_mid,base_top -BOX_HEIGHT,BOX_WIDTH,BOX_HEIGHT);
add(top);

//left rect
GRect left = new GRect(middle/2 -box_mid,roof_bottom,BOX_WIDTH,BOX_HEIGHT);
add(left);

// mid rect
GRect mid = new GRect(middle-box_mid,roof_bottom,BOX_WIDTH,BOX_HEIGHT);
add(mid);

//right rect
GRect right = new GRect(middle + middle/2 – box_mid,roof_bottom,BOX_WIDTH,BOX_HEIGHT);
add(right);

/*
* the lines connecting here
*/

//leftLine
GLine leftLine = new GLine(middle/2,roof_bottom,middle,base_top);
add(leftLine);

//midline
GLine midLine = new GLine(middle,base_top,middle,roof_bottom);
add(midLine);

//rightLine
GLine rightLine = new GLine(middle,base_top,middle+middle/2,roof_bottom);
add(rightLine);

/*
* the labels
*/

// TopLabel
GLabel topLabel = new GLabel("Program");
topLabel.move(middle-topLabel.getWidth()/2, base_top+topLabel.getAscent()/2 -BOX_HEIGHT/2);
add(topLabel);

//LeftLabel
GLabel leftLabel = new GLabel("GraphicsProgram");
leftLabel.move(middle/2-leftLabel.getWidth()/2, roof_bottom+leftLabel.getAscent()/2+BOX_HEIGHT/2);
add(leftLabel);

//Middle Label
GLabel midLabel = new GLabel("ConsoleProgram");
midLabel.move(middle-midLabel.getWidth()/2, roof_bottom+midLabel.getAscent()/2 +BOX_HEIGHT/2);
add(midLabel);

//rightLabel
GLabel rightLabel = new GLabel("DialogProgram");
rightLabel.move(middle+middle/2-rightLabel.getWidth()/2, roof_bottom+rightLabel.getAscent()/2 +BOX_HEIGHT/2);
add(rightLabel);

}
}

[/code]

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.