first commit
This commit is contained in:
BIN
Semester 1/Programming 1/Java/Chapter01/Figures/Canvas$1.class
Normal file
BIN
Semester 1/Programming 1/Java/Chapter01/Figures/Canvas$1.class
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Semester 1/Programming 1/Java/Chapter01/Figures/Canvas.class
Normal file
BIN
Semester 1/Programming 1/Java/Chapter01/Figures/Canvas.class
Normal file
Binary file not shown.
26
Semester 1/Programming 1/Java/Chapter01/Figures/Canvas.ctxt
Normal file
26
Semester 1/Programming 1/Java/Chapter01/Figures/Canvas.ctxt
Normal file
@@ -0,0 +1,26 @@
|
||||
#BlueJ class context
|
||||
comment0.target=Canvas\ getCanvas()
|
||||
comment0.text=\nFactory\ method\ to\ get\ the\ canvas\ singleton\ object.\n\n
|
||||
comment1.params=title\ width\ height\ bgColour
|
||||
comment1.target=Canvas(String,\ int,\ int,\ Color)
|
||||
comment1.text=\nCreate\ a\ Canvas.\n@param\ title\ \ title\ to\ appear\ in\ Canvas\ Frame\n@param\ width\ \ the\ desired\ width\ for\ the\ canvas\n@param\ height\ \ the\ desired\ height\ for\ the\ canvas\n@param\ bgClour\ \ the\ desired\ background\ colour\ of\ the\ canvas\n\n
|
||||
comment2.params=visible
|
||||
comment2.target=void\ setVisible(boolean)
|
||||
comment2.text=\nSet\ the\ canvas\ visibility\ and\ brings\ canvas\ to\ the\ front\ of\ screen\nwhen\ made\ visible.\ This\ method\ can\ also\ be\ used\ to\ bring\ an\ already\nvisible\ canvas\ to\ the\ front\ of\ other\ windows.\n@param\ visible\ \ boolean\ value\ representing\ the\ desired\ visibility\ of\nthe\ canvas\ (true\ or\ false)\ \n\n
|
||||
comment3.params=referenceObject\ color\ shape
|
||||
comment3.target=void\ draw(Object,\ String,\ Shape)
|
||||
comment3.text=\nDraw\ a\ given\ shape\ onto\ the\ canvas.\n@param\ \ referenceObject\ \ an\ object\ to\ define\ identity\ for\ this\ shape\n@param\ \ color\ \ \ \ \ \ \ \ \ \ \ \ the\ color\ of\ the\ shape\n@param\ \ shape\ \ \ \ \ \ \ \ \ \ \ \ the\ shape\ object\ to\ be\ drawn\ on\ the\ canvas\n\n
|
||||
comment4.params=referenceObject
|
||||
comment4.target=void\ erase(Object)
|
||||
comment4.text=\nErase\ a\ given\ shape's\ from\ the\ screen.\n@param\ \ referenceObject\ \ the\ shape\ object\ to\ be\ erased\ \n\n
|
||||
comment5.params=colorString
|
||||
comment5.target=void\ setForegroundColor(String)
|
||||
comment5.text=\nSet\ the\ foreground\ colour\ of\ the\ Canvas.\n@param\ \ newColour\ \ \ the\ new\ colour\ for\ the\ foreground\ of\ the\ Canvas\ \n\n
|
||||
comment6.params=milliseconds
|
||||
comment6.target=void\ wait(int)
|
||||
comment6.text=\nWait\ for\ a\ specified\ number\ of\ milliseconds\ before\ finishing.\nThis\ provides\ an\ easy\ way\ to\ specify\ a\ small\ delay\ which\ can\ be\nused\ when\ producing\ animations.\n@param\ \ milliseconds\ \ the\ number\ \n\n
|
||||
comment7.target=void\ redraw()
|
||||
comment7.text=\nRedraw\ ell\ shapes\ currently\ on\ the\ Canvas.\n\n
|
||||
comment8.target=void\ erase()
|
||||
comment8.text=\nErase\ the\ whole\ canvas.\ (Does\ not\ repaint.)\n\n
|
||||
numComments=9
|
221
Semester 1/Programming 1/Java/Chapter01/Figures/Canvas.java
Normal file
221
Semester 1/Programming 1/Java/Chapter01/Figures/Canvas.java
Normal file
@@ -0,0 +1,221 @@
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Canvas is a class to allow for simple graphical drawing on a canvas.
|
||||
* This is a modification of the general purpose Canvas, specially made for
|
||||
* the BlueJ "shapes" example.
|
||||
*
|
||||
* @author: Bruce Quig
|
||||
* @author: Michael Kolling (mik)
|
||||
*
|
||||
* @version: 1.6 (shapes)
|
||||
*/
|
||||
public class Canvas
|
||||
{
|
||||
// Note: The implementation of this class (specifically the handling of
|
||||
// shape identity and colors) is slightly more complex than necessary. This
|
||||
// is done on purpose to keep the interface and instance fields of the
|
||||
// shape objects in this project clean and simple for educational purposes.
|
||||
|
||||
private static Canvas canvasSingleton;
|
||||
|
||||
/**
|
||||
* Factory method to get the canvas singleton object.
|
||||
*/
|
||||
public static Canvas getCanvas()
|
||||
{
|
||||
if(canvasSingleton == null) {
|
||||
canvasSingleton = new Canvas("BlueJ Shapes Demo", 300, 300,
|
||||
Color.white);
|
||||
}
|
||||
canvasSingleton.setVisible(true);
|
||||
return canvasSingleton;
|
||||
}
|
||||
|
||||
// ----- instance part -----
|
||||
|
||||
private JFrame frame;
|
||||
private CanvasPane canvas;
|
||||
private Graphics2D graphic;
|
||||
private Color backgroundColour;
|
||||
private Image canvasImage;
|
||||
private List objects;
|
||||
private HashMap shapes;
|
||||
|
||||
/**
|
||||
* Create a Canvas.
|
||||
* @param title title to appear in Canvas Frame
|
||||
* @param width the desired width for the canvas
|
||||
* @param height the desired height for the canvas
|
||||
* @param bgClour the desired background colour of the canvas
|
||||
*/
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the canvas visibility and brings canvas to the front of screen
|
||||
* when made visible. This method can also be used to bring an already
|
||||
* visible canvas to the front of other windows.
|
||||
* @param visible boolean value representing the desired visibility of
|
||||
* the canvas (true or false)
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw a given shape onto the canvas.
|
||||
* @param referenceObject an object to define identity for this shape
|
||||
* @param color the color of the shape
|
||||
* @param shape the shape object to be drawn on the canvas
|
||||
*/
|
||||
// Note: this is a slightly backwards way of maintaining the shape
|
||||
// objects. It is carefully designed to keep the visible shape interfaces
|
||||
// in this project clean and simple for educational purposes.
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Erase a given shape's from the screen.
|
||||
* @param referenceObject the shape object to be erased
|
||||
*/
|
||||
public void erase(Object referenceObject)
|
||||
{
|
||||
objects.remove(referenceObject); // just in case it was already there
|
||||
shapes.remove(referenceObject);
|
||||
redraw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the foreground colour of the Canvas.
|
||||
* @param newColour the new colour for the foreground of the Canvas
|
||||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wait for a specified number of milliseconds before finishing.
|
||||
* This provides an easy way to specify a small delay which can be
|
||||
* used when producing animations.
|
||||
* @param milliseconds the number
|
||||
*/
|
||||
public void wait(int milliseconds)
|
||||
{
|
||||
try
|
||||
{
|
||||
Thread.sleep(milliseconds);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// ignoring exception at the moment
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Redraw ell shapes currently on the Canvas.
|
||||
*/
|
||||
private void redraw()
|
||||
{
|
||||
erase();
|
||||
for(Iterator i=objects.iterator(); i.hasNext(); ) {
|
||||
((ShapeDescription)shapes.get(i.next())).draw(graphic);
|
||||
}
|
||||
canvas.repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* Erase the whole canvas. (Does not 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);
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* Inner class CanvasPane - the actual canvas component contained in the
|
||||
* Canvas frame. This is essentially a JPanel with added capability to
|
||||
* refresh the image drawn on it.
|
||||
*/
|
||||
private class CanvasPane extends JPanel
|
||||
{
|
||||
public void paint(Graphics g)
|
||||
{
|
||||
g.drawImage(canvasImage, 0, 0, null);
|
||||
}
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Inner class CanvasPane - the actual canvas component contained in the
|
||||
* Canvas frame. This is essentially a JPanel with added capability to
|
||||
* refresh the image drawn on it.
|
||||
*/
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
BIN
Semester 1/Programming 1/Java/Chapter01/Figures/Circle.class
Normal file
BIN
Semester 1/Programming 1/Java/Chapter01/Figures/Circle.class
Normal file
Binary file not shown.
53
Semester 1/Programming 1/Java/Chapter01/Figures/Circle.ctxt
Normal file
53
Semester 1/Programming 1/Java/Chapter01/Figures/Circle.ctxt
Normal file
@@ -0,0 +1,53 @@
|
||||
#BlueJ class context
|
||||
comment0.params=
|
||||
comment0.target=Circle()
|
||||
comment0.text=\n\ Create\ a\ new\ circle\ at\ default\ position\ with\ default\ color.\n
|
||||
comment1.params=x\ y
|
||||
comment1.target=Circle(int,\ int)
|
||||
comment10.params=distance
|
||||
comment10.target=void\ moveHorizontal(int)
|
||||
comment10.text=\n\ Move\ the\ circle\ horizontally\ by\ 'distance'\ pixels.\n
|
||||
comment11.params=distance
|
||||
comment11.target=void\ moveVertical(int)
|
||||
comment11.text=\n\ Move\ the\ circle\ vertically\ by\ 'distance'\ pixels.\n
|
||||
comment12.params=distance
|
||||
comment12.target=void\ slowMoveHorizontal(int)
|
||||
comment12.text=\n\ Slowly\ move\ the\ circle\ horizontally\ by\ 'distance'\ pixels.\n
|
||||
comment13.params=distance
|
||||
comment13.target=void\ slowMoveVertical(int)
|
||||
comment13.text=\n\ Slowly\ move\ the\ circle\ vertically\ by\ 'distance'\ pixels.\n
|
||||
comment14.params=newDiameter
|
||||
comment14.target=void\ changeSize(int)
|
||||
comment14.text=\n\ Change\ the\ size\ to\ the\ new\ size\ (in\ pixels).\ Size\ must\ be\ >\=\ 0.\n
|
||||
comment15.params=newColor
|
||||
comment15.target=void\ changeColor(java.lang.String)
|
||||
comment15.text=\n\ Change\ the\ color.\ Valid\ colors\ are\ "red",\ "yellow",\ "blue",\ "green",\n\ "magenta"\ and\ "black".\n
|
||||
comment16.params=
|
||||
comment16.target=void\ draw()
|
||||
comment16.text=\n\ Draw\ the\ circle\ with\ current\ specifications\ on\ screen.\n
|
||||
comment17.params=
|
||||
comment17.target=void\ erase()
|
||||
comment17.text=\n\ Erase\ the\ circle\ on\ screen.\n
|
||||
comment2.params=x\ y\ col
|
||||
comment2.target=Circle(int,\ int,\ java.lang.String)
|
||||
comment3.params=x\ y\ col\ d
|
||||
comment3.target=Circle(int,\ int,\ java.lang.String,\ int)
|
||||
comment4.params=
|
||||
comment4.target=void\ makeVisible()
|
||||
comment4.text=\n\ Make\ this\ circle\ visible.\ If\ it\ was\ already\ visible,\ do\ nothing.\n
|
||||
comment5.params=
|
||||
comment5.target=void\ makeInvisible()
|
||||
comment5.text=\n\ Make\ this\ circle\ invisible.\ If\ it\ was\ already\ invisible,\ do\ nothing.\n
|
||||
comment6.params=
|
||||
comment6.target=void\ moveRight()
|
||||
comment6.text=\n\ Move\ the\ circle\ a\ few\ pixels\ to\ the\ right.\n
|
||||
comment7.params=
|
||||
comment7.target=void\ moveLeft()
|
||||
comment7.text=\n\ Move\ the\ circle\ a\ few\ pixels\ to\ the\ left.\n
|
||||
comment8.params=
|
||||
comment8.target=void\ moveUp()
|
||||
comment8.text=\n\ Move\ the\ circle\ a\ few\ pixels\ up.\n
|
||||
comment9.params=
|
||||
comment9.target=void\ moveDown()
|
||||
comment9.text=\n\ Move\ the\ circle\ a\ few\ pixels\ down.\n
|
||||
numComments=18
|
211
Semester 1/Programming 1/Java/Chapter01/Figures/Circle.java
Normal file
211
Semester 1/Programming 1/Java/Chapter01/Figures/Circle.java
Normal file
@@ -0,0 +1,211 @@
|
||||
import java.awt.*;
|
||||
import java.awt.geom.*;
|
||||
|
||||
/**
|
||||
* A circle that can be manipulated and that draws itself on a canvas.
|
||||
*
|
||||
* @author Michael Kolling and David J. Barnes
|
||||
* @version 1.0 (15 July 2000)
|
||||
*/
|
||||
|
||||
public class Circle
|
||||
{
|
||||
private int diameter;
|
||||
private int xPosition;
|
||||
private int yPosition;
|
||||
private String color;
|
||||
private boolean isVisible;
|
||||
|
||||
/**
|
||||
* Create a new circle at default position with default color.
|
||||
*/
|
||||
public Circle()
|
||||
{
|
||||
diameter = 30;
|
||||
xPosition = 20;
|
||||
yPosition = 60;
|
||||
color = "blue";
|
||||
isVisible = false;
|
||||
}
|
||||
|
||||
public Circle(int x, int y){
|
||||
diameter = 30;
|
||||
xPosition = x;
|
||||
yPosition = y;
|
||||
color = "blue";
|
||||
}
|
||||
|
||||
public Circle(int x, int y, String col){
|
||||
this(x,y,col,20);
|
||||
}
|
||||
public Circle(int x, int y, String col, int d){
|
||||
diameter = d;
|
||||
xPosition = x;
|
||||
yPosition = y;
|
||||
color = "blue";
|
||||
makeVisible();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Make this circle visible. If it was already visible, do nothing.
|
||||
*/
|
||||
public void makeVisible()
|
||||
{
|
||||
isVisible = true;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Make this circle invisible. If it was already invisible, do nothing.
|
||||
*/
|
||||
public void makeInvisible()
|
||||
{
|
||||
erase();
|
||||
isVisible = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the circle a few pixels to the right.
|
||||
*/
|
||||
public void moveRight()
|
||||
{
|
||||
moveHorizontal(20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the circle a few pixels to the left.
|
||||
*/
|
||||
public void moveLeft()
|
||||
{
|
||||
moveHorizontal(-20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the circle a few pixels up.
|
||||
*/
|
||||
public void moveUp()
|
||||
{
|
||||
moveVertical(-20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the circle a few pixels down.
|
||||
*/
|
||||
public void moveDown()
|
||||
{
|
||||
moveVertical(20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the circle horizontally by 'distance' pixels.
|
||||
*/
|
||||
public void moveHorizontal(int distance)
|
||||
{
|
||||
erase();
|
||||
xPosition += distance;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the circle vertically by 'distance' pixels.
|
||||
*/
|
||||
public void moveVertical(int distance)
|
||||
{
|
||||
erase();
|
||||
yPosition += distance;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Slowly move the circle 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 circle 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 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();
|
||||
}
|
||||
|
||||
/*
|
||||
* Draw the circle with current specifications on screen.
|
||||
*/
|
||||
private void draw()
|
||||
{
|
||||
if(isVisible) {
|
||||
Canvas canvas = Canvas.getCanvas();
|
||||
canvas.draw(this, color, new Ellipse2D.Double(xPosition, yPosition,
|
||||
diameter, diameter));
|
||||
canvas.wait(10);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Erase the circle on screen.
|
||||
*/
|
||||
private void erase()
|
||||
{
|
||||
if(isVisible) {
|
||||
Canvas canvas = Canvas.getCanvas();
|
||||
canvas.erase(this);
|
||||
}
|
||||
}
|
||||
}
|
44
Semester 1/Programming 1/Java/Chapter01/Figures/README.TXT
Normal file
44
Semester 1/Programming 1/Java/Chapter01/Figures/README.TXT
Normal file
@@ -0,0 +1,44 @@
|
||||
Project "shapes"
|
||||
Authors: Michael Kolling and David J. Barnes
|
||||
|
||||
This project is part of the material for the book
|
||||
|
||||
Objects First with Java - A Practical Introduction using BlueJ
|
||||
David J. Barnes and Michael Kolling
|
||||
Pearson Education, 2002
|
||||
|
||||
It is discussed in chapter 1.
|
||||
|
||||
This is a very simple project to demonstrate some characteristics of
|
||||
objects.
|
||||
|
||||
You can create various shapes, and you will see, if you do, that those
|
||||
shapes are drawn on screen (in a window that we call the "canvas").
|
||||
|
||||
You can then manipulate these objects: change their position, size and
|
||||
colour. Try it out: create a few different squares, triangles and circles.
|
||||
|
||||
This project is designed as a first example of object-oriented programming.
|
||||
It illustrates a number of concepts:
|
||||
|
||||
- a Java project (application) is a collection of classes
|
||||
- objects can be created from classes
|
||||
- from any one class, many objects may be created
|
||||
- objects have operations (methods)
|
||||
- operations can have parameters
|
||||
- parameters have types (at least String and int)
|
||||
- objects hold data (fields)
|
||||
- the operations and fields are common to all objects
|
||||
- the values stored in the fields can be different for each object
|
||||
|
||||
The project also demonstrates
|
||||
|
||||
- BlueJ object creation
|
||||
- interactive method invocation
|
||||
- parameter passing
|
||||
|
||||
A good second project to look at after this is "picture", which adds a class
|
||||
to those ones in this project. That class (named "Picture") uses the shapes
|
||||
to draw a picture. It can be used to experiment with coding.
|
||||
|
||||
Michael Kolling, July 2000
|
BIN
Semester 1/Programming 1/Java/Chapter01/Figures/Square.class
Normal file
BIN
Semester 1/Programming 1/Java/Chapter01/Figures/Square.class
Normal file
Binary file not shown.
47
Semester 1/Programming 1/Java/Chapter01/Figures/Square.ctxt
Normal file
47
Semester 1/Programming 1/Java/Chapter01/Figures/Square.ctxt
Normal file
@@ -0,0 +1,47 @@
|
||||
#BlueJ class context
|
||||
comment0.params=
|
||||
comment0.target=Square()
|
||||
comment0.text=\n\ Create\ a\ new\ square\ at\ default\ position\ with\ default\ color.\n
|
||||
comment1.params=
|
||||
comment1.target=void\ makeVisible()
|
||||
comment1.text=\n\ Make\ this\ square\ visible.\ If\ it\ was\ already\ visible,\ do\ nothing.\n
|
||||
comment10.params=distance
|
||||
comment10.target=void\ slowMoveVertical(int)
|
||||
comment10.text=\n\ Slowly\ move\ the\ square\ vertically\ by\ 'distance'\ pixels.\n
|
||||
comment11.params=newSize
|
||||
comment11.target=void\ changeSize(int)
|
||||
comment11.text=\n\ Change\ the\ size\ to\ the\ new\ size\ (in\ pixels).\ Size\ must\ be\ >\=\ 0.\n
|
||||
comment12.params=newColor
|
||||
comment12.target=void\ changeColor(java.lang.String)
|
||||
comment12.text=\n\ Change\ the\ color.\ Valid\ colors\ are\ "red",\ "yellow",\ "blue",\ "green",\n\ "magenta"\ and\ "black".\n
|
||||
comment13.params=
|
||||
comment13.target=void\ draw()
|
||||
comment13.text=\n\ Draw\ the\ square\ with\ current\ specifications\ on\ screen.\n
|
||||
comment14.params=
|
||||
comment14.target=void\ erase()
|
||||
comment14.text=\n\ Erase\ the\ square\ on\ screen.\n
|
||||
comment2.params=
|
||||
comment2.target=void\ makeInvisible()
|
||||
comment2.text=\n\ Make\ this\ square\ invisible.\ If\ it\ was\ already\ invisible,\ do\ nothing.\n
|
||||
comment3.params=
|
||||
comment3.target=void\ moveRight()
|
||||
comment3.text=\n\ Move\ the\ square\ a\ few\ pixels\ to\ the\ right.\n
|
||||
comment4.params=
|
||||
comment4.target=void\ moveLeft()
|
||||
comment4.text=\n\ Move\ the\ square\ a\ few\ pixels\ to\ the\ left.\n
|
||||
comment5.params=
|
||||
comment5.target=void\ moveUp()
|
||||
comment5.text=\n\ Move\ the\ square\ a\ few\ pixels\ up.\n
|
||||
comment6.params=
|
||||
comment6.target=void\ moveDown()
|
||||
comment6.text=\n\ Move\ the\ square\ a\ few\ pixels\ down.\n
|
||||
comment7.params=distance
|
||||
comment7.target=void\ moveHorizontal(int)
|
||||
comment7.text=\n\ Move\ the\ square\ horizontally\ by\ 'distance'\ pixels.\n
|
||||
comment8.params=distance
|
||||
comment8.target=void\ moveVertical(int)
|
||||
comment8.text=\n\ Move\ the\ square\ vertically\ by\ 'distance'\ pixels.\n
|
||||
comment9.params=distance
|
||||
comment9.target=void\ slowMoveHorizontal(int)
|
||||
comment9.text=\n\ Slowly\ move\ the\ square\ horizontally\ by\ 'distance'\ pixels.\n
|
||||
numComments=15
|
191
Semester 1/Programming 1/Java/Chapter01/Figures/Square.java
Normal file
191
Semester 1/Programming 1/Java/Chapter01/Figures/Square.java
Normal file
@@ -0,0 +1,191 @@
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* A square that can be manipulated and that draws itself on a canvas.
|
||||
*
|
||||
* @author Michael Kolling and David J. Barnes
|
||||
* @version 1.0 (15 July 2000)
|
||||
*/
|
||||
|
||||
public class Square
|
||||
{
|
||||
private int size;
|
||||
private int xPosition;
|
||||
private int yPosition;
|
||||
private String color;
|
||||
private boolean isVisible;
|
||||
|
||||
/**
|
||||
* Create a new square at default position with default color.
|
||||
*/
|
||||
public Square()
|
||||
{
|
||||
size = 30;
|
||||
xPosition = 60;
|
||||
yPosition = 50;
|
||||
color = "red";
|
||||
isVisible = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make this square visible. If it was already visible, do nothing.
|
||||
*/
|
||||
public void makeVisible()
|
||||
{
|
||||
isVisible = true;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Make this square invisible. If it was already invisible, do nothing.
|
||||
*/
|
||||
public void makeInvisible()
|
||||
{
|
||||
erase();
|
||||
isVisible = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the square a few pixels to the right.
|
||||
*/
|
||||
public void moveRight()
|
||||
{
|
||||
moveHorizontal(20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the square a few pixels to the left.
|
||||
*/
|
||||
public void moveLeft()
|
||||
{
|
||||
moveHorizontal(-20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the square a few pixels up.
|
||||
*/
|
||||
public void moveUp()
|
||||
{
|
||||
moveVertical(-20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the square a few pixels down.
|
||||
*/
|
||||
public void moveDown()
|
||||
{
|
||||
moveVertical(20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the square horizontally by 'distance' pixels.
|
||||
*/
|
||||
public void moveHorizontal(int distance)
|
||||
{
|
||||
erase();
|
||||
xPosition += distance;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the square vertically by 'distance' pixels.
|
||||
*/
|
||||
public void moveVertical(int distance)
|
||||
{
|
||||
erase();
|
||||
yPosition += distance;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Slowly move the square 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 square 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 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();
|
||||
}
|
||||
|
||||
/*
|
||||
* Draw the square with current specifications on screen.
|
||||
*/
|
||||
private void draw()
|
||||
{
|
||||
if(isVisible) {
|
||||
Canvas canvas = Canvas.getCanvas();
|
||||
canvas.draw(this, color,
|
||||
new Rectangle(xPosition, yPosition, size, size));
|
||||
canvas.wait(10);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Erase the square on screen.
|
||||
*/
|
||||
private void erase()
|
||||
{
|
||||
if(isVisible) {
|
||||
Canvas canvas = Canvas.getCanvas();
|
||||
canvas.erase(this);
|
||||
}
|
||||
}
|
||||
}
|
BIN
Semester 1/Programming 1/Java/Chapter01/Figures/Triangle.class
Normal file
BIN
Semester 1/Programming 1/Java/Chapter01/Figures/Triangle.class
Normal file
Binary file not shown.
@@ -0,0 +1,38 @@
|
||||
#BlueJ class context
|
||||
comment0.target=Triangle()
|
||||
comment0.text=\nCreate\ a\ new\ triangle\ at\ default\ position\ with\ default\ color.\n\n
|
||||
comment1.target=void\ makeVisible()
|
||||
comment1.text=\nMake\ this\ triangle\ visible.\ If\ it\ was\ already\ visible,\ do\ nothing.\n\n
|
||||
comment10.params=distance
|
||||
comment10.target=void\ slowMoveVertical(int)
|
||||
comment10.text=\nSlowly\ move\ the\ triangle\ vertically\ by\ 'distance'\ pixels.\n\n
|
||||
comment11.params=newHeight\ newWidth
|
||||
comment11.target=void\ changeSize(int,\ int)
|
||||
comment11.text=\nChange\ the\ size\ to\ the\ new\ size\ (in\ pixels).\ Size\ must\ be\ >\=\ 0.\n\n
|
||||
comment12.params=newColor
|
||||
comment12.target=void\ changeColor(String)
|
||||
comment12.text=\nChange\ the\ color.\ Valid\ colors\ are\ "red",\ "yellow",\ "blue",\ "green",\n"magenta"\ and\ "black".\n\n
|
||||
comment13.target=void\ draw()
|
||||
comment13.text=Draw\ the\ triangle\ with\ current\ specifications\ on\ screen.\n\n
|
||||
comment14.target=void\ erase()
|
||||
comment14.text=Erase\ the\ triangle\ on\ screen.\n\n
|
||||
comment2.target=void\ makeInvisible()
|
||||
comment2.text=\nMake\ this\ triangle\ invisible.\ If\ it\ was\ already\ invisible,\ do\ nothing.\n\n
|
||||
comment3.target=void\ moveRight()
|
||||
comment3.text=\nMove\ the\ triangle\ a\ few\ pixels\ to\ the\ right.\n\n
|
||||
comment4.target=void\ moveLeft()
|
||||
comment4.text=\nMove\ the\ triangle\ a\ few\ pixels\ to\ the\ left.\n\n
|
||||
comment5.target=void\ moveUp()
|
||||
comment5.text=\nMove\ the\ triangle\ a\ few\ pixels\ up.\n\n
|
||||
comment6.target=void\ moveDown()
|
||||
comment6.text=\nMove\ the\ triangle\ a\ few\ pixels\ down.\n\n
|
||||
comment7.params=distance
|
||||
comment7.target=void\ moveHorizontal(int)
|
||||
comment7.text=\nMove\ the\ triangle\ horizontally\ by\ 'distance'\ pixels.\n\n
|
||||
comment8.params=distance
|
||||
comment8.target=void\ moveVertical(int)
|
||||
comment8.text=\nMove\ the\ triangle\ vertically\ by\ 'distance'\ pixels.\n\n
|
||||
comment9.params=distance
|
||||
comment9.target=void\ slowMoveHorizontal(int)
|
||||
comment9.text=\nSlowly\ move\ the\ triangle\ horizontally\ by\ 'distance'\ pixels.\n\n
|
||||
numComments=15
|
195
Semester 1/Programming 1/Java/Chapter01/Figures/Triangle.java
Normal file
195
Semester 1/Programming 1/Java/Chapter01/Figures/Triangle.java
Normal file
@@ -0,0 +1,195 @@
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* A triangle that can be manipulated and that draws itself on a canvas.
|
||||
*
|
||||
* @author Michael Kolling and David J. Barnes
|
||||
* @version 1.0 (15 July 2000)
|
||||
*/
|
||||
|
||||
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 = 30;
|
||||
width = 40;
|
||||
xPosition = 50;
|
||||
yPosition = 15;
|
||||
color = "green";
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
62
Semester 1/Programming 1/Java/Chapter01/Figures/bluej.pkg
Normal file
62
Semester 1/Programming 1/Java/Chapter01/Figures/bluej.pkg
Normal file
@@ -0,0 +1,62 @@
|
||||
#BlueJ package file
|
||||
dependency1.from=Triangle
|
||||
dependency1.to=Canvas
|
||||
dependency1.type=UsesDependency
|
||||
dependency2.from=Square
|
||||
dependency2.to=Canvas
|
||||
dependency2.type=UsesDependency
|
||||
dependency3.from=Circle
|
||||
dependency3.to=Canvas
|
||||
dependency3.type=UsesDependency
|
||||
objectbench.height=76
|
||||
objectbench.width=940
|
||||
package.editor.height=874
|
||||
package.editor.width=814
|
||||
package.editor.x=0
|
||||
package.editor.y=31
|
||||
package.numDependencies=3
|
||||
package.numTargets=4
|
||||
package.showExtends=true
|
||||
package.showUses=true
|
||||
project.charset=UTF-8
|
||||
target1.editor.height=867
|
||||
target1.editor.width=1100
|
||||
target1.editor.x=0
|
||||
target1.editor.y=31
|
||||
target1.height=40
|
||||
target1.name=Circle
|
||||
target1.naviview.expanded=true
|
||||
target1.showInterface=false
|
||||
target1.type=ClassTarget
|
||||
target1.typeParameters=
|
||||
target1.width=70
|
||||
target1.x=100
|
||||
target1.y=120
|
||||
target2.editor.height=521
|
||||
target2.editor.width=626
|
||||
target2.editor.x=0
|
||||
target2.editor.y=0
|
||||
target2.height=40
|
||||
target2.name=Canvas
|
||||
target2.showInterface=false
|
||||
target2.type=ClassTarget
|
||||
target2.typeParameters=
|
||||
target2.width=70
|
||||
target2.x=20
|
||||
target2.y=180
|
||||
target3.height=40
|
||||
target3.name=Triangle
|
||||
target3.showInterface=false
|
||||
target3.type=ClassTarget
|
||||
target3.typeParameters=
|
||||
target3.width=70
|
||||
target3.x=260
|
||||
target3.y=60
|
||||
target4.height=40
|
||||
target4.name=Square
|
||||
target4.showInterface=false
|
||||
target4.type=ClassTarget
|
||||
target4.typeParameters=
|
||||
target4.width=70
|
||||
target4.x=180
|
||||
target4.y=90
|
@@ -0,0 +1,62 @@
|
||||
#BlueJ package file
|
||||
dependency1.from=Triangle
|
||||
dependency1.to=Canvas
|
||||
dependency1.type=UsesDependency
|
||||
dependency2.from=Square
|
||||
dependency2.to=Canvas
|
||||
dependency2.type=UsesDependency
|
||||
dependency3.from=Circle
|
||||
dependency3.to=Canvas
|
||||
dependency3.type=UsesDependency
|
||||
objectbench.height=76
|
||||
objectbench.width=940
|
||||
package.editor.height=874
|
||||
package.editor.width=814
|
||||
package.editor.x=0
|
||||
package.editor.y=31
|
||||
package.numDependencies=3
|
||||
package.numTargets=4
|
||||
package.showExtends=true
|
||||
package.showUses=true
|
||||
project.charset=UTF-8
|
||||
target1.editor.height=867
|
||||
target1.editor.width=1100
|
||||
target1.editor.x=0
|
||||
target1.editor.y=31
|
||||
target1.height=40
|
||||
target1.name=Circle
|
||||
target1.naviview.expanded=true
|
||||
target1.showInterface=false
|
||||
target1.type=ClassTarget
|
||||
target1.typeParameters=
|
||||
target1.width=70
|
||||
target1.x=100
|
||||
target1.y=120
|
||||
target2.editor.height=521
|
||||
target2.editor.width=626
|
||||
target2.editor.x=0
|
||||
target2.editor.y=0
|
||||
target2.height=40
|
||||
target2.name=Canvas
|
||||
target2.showInterface=false
|
||||
target2.type=ClassTarget
|
||||
target2.typeParameters=
|
||||
target2.width=70
|
||||
target2.x=20
|
||||
target2.y=180
|
||||
target3.height=40
|
||||
target3.name=Triangle
|
||||
target3.showInterface=false
|
||||
target3.type=ClassTarget
|
||||
target3.typeParameters=
|
||||
target3.width=70
|
||||
target3.x=260
|
||||
target3.y=60
|
||||
target4.height=40
|
||||
target4.name=Square
|
||||
target4.showInterface=false
|
||||
target4.type=ClassTarget
|
||||
target4.typeParameters=
|
||||
target4.width=70
|
||||
target4.x=180
|
||||
target4.y=90
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,29 @@
|
||||
#BlueJ class context
|
||||
comment0.params=
|
||||
comment0.target=Canvas\ getCanvas()
|
||||
comment0.text=\n\ Factory\ method\ to\ get\ the\ canvas\ singleton\ object.\n
|
||||
comment1.params=title\ width\ height\ bgColor
|
||||
comment1.target=Canvas(java.lang.String,\ int,\ int,\ java.awt.Color)
|
||||
comment1.text=\n\ Create\ a\ Canvas.\n\ @param\ title\ \ \ \ title\ to\ appear\ in\ Canvas\ Frame\n\ @param\ width\ \ \ \ the\ desired\ width\ for\ the\ canvas\n\ @param\ height\ \ \ the\ desired\ height\ for\ the\ canvas\n\ @param\ bgColor\ the\ desired\ background\ color\ of\ the\ canvas\n
|
||||
comment2.params=visible
|
||||
comment2.target=void\ setVisible(boolean)
|
||||
comment2.text=\n\ Set\ the\ canvas\ visibility\ and\ brings\ canvas\ to\ the\ front\ of\ screen\n\ when\ made\ visible.\ This\ method\ can\ also\ be\ used\ to\ bring\ an\ already\n\ visible\ canvas\ to\ the\ front\ of\ other\ windows.\n\ @param\ visible\ \ boolean\ value\ representing\ the\ desired\ visibility\ of\n\ the\ canvas\ (true\ or\ false)\ \n
|
||||
comment3.params=referenceObject\ color\ shape
|
||||
comment3.target=void\ draw(java.lang.Object,\ java.lang.String,\ java.awt.Shape)
|
||||
comment3.text=\n\ Draw\ a\ given\ shape\ onto\ the\ canvas.\n\ @param\ \ referenceObject\ \ an\ object\ to\ define\ identity\ for\ this\ shape\n\ @param\ \ color\ \ \ \ \ \ \ \ \ \ \ \ the\ color\ of\ the\ shape\n\ @param\ \ shape\ \ \ \ \ \ \ \ \ \ \ \ the\ shape\ object\ to\ be\ drawn\ on\ the\ canvas\n
|
||||
comment4.params=referenceObject
|
||||
comment4.target=void\ erase(java.lang.Object)
|
||||
comment4.text=\n\ Erase\ a\ given\ shape's\ from\ the\ screen.\n\ @param\ \ referenceObject\ \ the\ shape\ object\ to\ be\ erased\ \n
|
||||
comment5.params=colorString
|
||||
comment5.target=void\ setForegroundColor(java.lang.String)
|
||||
comment5.text=\n\ Set\ the\ foreground\ color\ of\ the\ Canvas.\n\ @param\ \ newColor\ \ \ the\ new\ color\ for\ the\ foreground\ of\ the\ Canvas\ \n
|
||||
comment6.params=milliseconds
|
||||
comment6.target=void\ wait(int)
|
||||
comment6.text=\n\ Wait\ for\ a\ specified\ number\ of\ milliseconds\ before\ finishing.\n\ This\ provides\ an\ easy\ way\ to\ specify\ a\ small\ delay\ which\ can\ be\n\ used\ when\ producing\ animations.\n\ @param\ \ milliseconds\ \ the\ number\ \n
|
||||
comment7.params=
|
||||
comment7.target=void\ redraw()
|
||||
comment7.text=\n\ Redraw\ ell\ shapes\ currently\ on\ the\ Canvas.\n
|
||||
comment8.params=
|
||||
comment8.target=void\ erase()
|
||||
comment8.text=\n\ Erase\ the\ whole\ canvas.\ (Does\ not\ repaint.)\n
|
||||
numComments=9
|
@@ -0,0 +1,230 @@
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Canvas is a class to allow for simple graphical drawing on a canvas.
|
||||
* This is a modification of the general purpose Canvas, specially made for
|
||||
* the BlueJ "shapes" example.
|
||||
*
|
||||
* @author: Bruce Quig
|
||||
* @author: Michael K<>lling (mik)
|
||||
*
|
||||
* @version 2016.02.29
|
||||
*/
|
||||
public class Canvas
|
||||
{
|
||||
// Note: The implementation of this class (specifically the handling of
|
||||
// shape identity and colors) is slightly more complex than necessary. This
|
||||
// is done on purpose to keep the interface and instance fields of the
|
||||
// shape objects in this project clean and simple for educational purposes.
|
||||
|
||||
private static Canvas canvasSingleton;
|
||||
|
||||
/**
|
||||
* Factory method to get the canvas singleton object.
|
||||
*/
|
||||
public static Canvas getCanvas()
|
||||
{
|
||||
if(canvasSingleton == null) {
|
||||
canvasSingleton = new Canvas("BlueJ Picture Demo", 500, 300,
|
||||
Color.white);
|
||||
}
|
||||
canvasSingleton.setVisible(true);
|
||||
return canvasSingleton;
|
||||
}
|
||||
|
||||
// ----- instance part -----
|
||||
|
||||
private JFrame frame;
|
||||
private CanvasPane canvas;
|
||||
private Graphics2D graphic;
|
||||
private Color backgroundColor;
|
||||
private Image canvasImage;
|
||||
private List<Object> objects;
|
||||
private HashMap<Object, ShapeDescription> shapes;
|
||||
|
||||
/**
|
||||
* Create a Canvas.
|
||||
* @param title title to appear in Canvas Frame
|
||||
* @param width the desired width for the canvas
|
||||
* @param height the desired height for the canvas
|
||||
* @param bgColor the desired background color of the canvas
|
||||
*/
|
||||
private Canvas(String title, int width, int height, Color bgColor)
|
||||
{
|
||||
frame = new JFrame();
|
||||
canvas = new CanvasPane();
|
||||
frame.setContentPane(canvas);
|
||||
frame.setTitle(title);
|
||||
frame.setLocation(30, 30);
|
||||
canvas.setPreferredSize(new Dimension(width, height));
|
||||
backgroundColor = bgColor;
|
||||
frame.pack();
|
||||
objects = new ArrayList<Object>();
|
||||
shapes = new HashMap<Object, ShapeDescription>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the canvas visibility and brings canvas to the front of screen
|
||||
* when made visible. This method can also be used to bring an already
|
||||
* visible canvas to the front of other windows.
|
||||
* @param visible boolean value representing the desired visibility of
|
||||
* the canvas (true or false)
|
||||
*/
|
||||
public void setVisible(boolean visible)
|
||||
{
|
||||
if(graphic == null) {
|
||||
// first time: instantiate the offscreen image and fill it with
|
||||
// the background color
|
||||
Dimension size = canvas.getSize();
|
||||
canvasImage = canvas.createImage(size.width, size.height);
|
||||
graphic = (Graphics2D)canvasImage.getGraphics();
|
||||
graphic.setColor(backgroundColor);
|
||||
graphic.fillRect(0, 0, size.width, size.height);
|
||||
graphic.setColor(Color.black);
|
||||
}
|
||||
frame.setVisible(visible);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw a given shape onto the canvas.
|
||||
* @param referenceObject an object to define identity for this shape
|
||||
* @param color the color of the shape
|
||||
* @param shape the shape object to be drawn on the canvas
|
||||
*/
|
||||
// Note: this is a slightly backwards way of maintaining the shape
|
||||
// objects. It is carefully designed to keep the visible shape interfaces
|
||||
// in this project clean and simple for educational purposes.
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Erase a given shape's from the screen.
|
||||
* @param referenceObject the shape object to be erased
|
||||
*/
|
||||
public void erase(Object referenceObject)
|
||||
{
|
||||
objects.remove(referenceObject); // just in case it was already there
|
||||
shapes.remove(referenceObject);
|
||||
redraw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the foreground color of the Canvas.
|
||||
* @param newColor the new color for the foreground of the Canvas
|
||||
*/
|
||||
public void setForegroundColor(String colorString)
|
||||
{
|
||||
if(colorString.equals("red")) {
|
||||
graphic.setColor(new Color(235, 25, 25));
|
||||
}
|
||||
else if(colorString.equals("black")) {
|
||||
graphic.setColor(Color.black);
|
||||
}
|
||||
else if(colorString.equals("blue")) {
|
||||
graphic.setColor(new Color(30, 75, 220));
|
||||
}
|
||||
else if(colorString.equals("yellow")) {
|
||||
graphic.setColor(new Color(255, 230, 0));
|
||||
}
|
||||
else if(colorString.equals("green")) {
|
||||
graphic.setColor(new Color(80, 160, 60));
|
||||
}
|
||||
else if(colorString.equals("magenta")) {
|
||||
graphic.setColor(Color.magenta);
|
||||
}
|
||||
else if(colorString.equals("white")) {
|
||||
graphic.setColor(Color.white);
|
||||
}
|
||||
else {
|
||||
graphic.setColor(Color.black);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Wait for a specified number of milliseconds before finishing.
|
||||
* This provides an easy way to specify a small delay which can be
|
||||
* used when producing animations.
|
||||
* @param milliseconds the number
|
||||
*/
|
||||
public void wait(int milliseconds)
|
||||
{
|
||||
try
|
||||
{
|
||||
Thread.sleep(milliseconds);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
// ignoring exception at the moment
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Redraw ell shapes currently on the Canvas.
|
||||
*/
|
||||
private void redraw()
|
||||
{
|
||||
erase();
|
||||
for(Object shape : objects) {
|
||||
shapes.get(shape).draw(graphic);
|
||||
}
|
||||
canvas.repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* Erase the whole canvas. (Does not repaint.)
|
||||
*/
|
||||
private void erase()
|
||||
{
|
||||
Color original = graphic.getColor();
|
||||
graphic.setColor(backgroundColor);
|
||||
Dimension size = canvas.getSize();
|
||||
graphic.fill(new Rectangle(0, 0, size.width, size.height));
|
||||
graphic.setColor(original);
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************
|
||||
* Inner class CanvasPane - the actual canvas component contained in the
|
||||
* Canvas frame. This is essentially a JPanel with added capability to
|
||||
* refresh the image drawn on it.
|
||||
*/
|
||||
private class CanvasPane extends JPanel
|
||||
{
|
||||
public void paint(Graphics g)
|
||||
{
|
||||
g.drawImage(canvasImage, 0, 0, null);
|
||||
}
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
* Inner class CanvasPane - the actual canvas component contained in the
|
||||
* Canvas frame. This is essentially a JPanel with added capability to
|
||||
* refresh the image drawn on it.
|
||||
*/
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Binary file not shown.
@@ -0,0 +1,47 @@
|
||||
#BlueJ class context
|
||||
comment0.params=
|
||||
comment0.target=Circle()
|
||||
comment0.text=\n\ Create\ a\ new\ circle\ at\ default\ position\ with\ default\ color.\n
|
||||
comment1.params=
|
||||
comment1.target=void\ makeVisible()
|
||||
comment1.text=\n\ Make\ this\ circle\ visible.\ If\ it\ was\ already\ visible,\ do\ nothing.\n
|
||||
comment10.params=distance
|
||||
comment10.target=void\ slowMoveVertical(int)
|
||||
comment10.text=\n\ Slowly\ move\ the\ circle\ vertically\ by\ 'distance'\ pixels.\n
|
||||
comment11.params=newDiameter
|
||||
comment11.target=void\ changeSize(int)
|
||||
comment11.text=\n\ Change\ the\ size\ to\ the\ new\ size\ (in\ pixels).\ Size\ must\ be\ >\=\ 0.\n
|
||||
comment12.params=newColor
|
||||
comment12.target=void\ changeColor(java.lang.String)
|
||||
comment12.text=\n\ Change\ the\ color.\ Valid\ colors\ are\ "red",\ "yellow",\ "blue",\ "green",\n\ "magenta"\ and\ "black".\n
|
||||
comment13.params=
|
||||
comment13.target=void\ draw()
|
||||
comment13.text=\n\ Draw\ the\ circle\ with\ current\ specifications\ on\ screen.\n
|
||||
comment14.params=
|
||||
comment14.target=void\ erase()
|
||||
comment14.text=\n\ Erase\ the\ circle\ on\ screen.\n
|
||||
comment2.params=
|
||||
comment2.target=void\ makeInvisible()
|
||||
comment2.text=\n\ Make\ this\ circle\ invisible.\ If\ it\ was\ already\ invisible,\ do\ nothing.\n
|
||||
comment3.params=
|
||||
comment3.target=void\ moveRight()
|
||||
comment3.text=\n\ Move\ the\ circle\ a\ few\ pixels\ to\ the\ right.\n
|
||||
comment4.params=
|
||||
comment4.target=void\ moveLeft()
|
||||
comment4.text=\n\ Move\ the\ circle\ a\ few\ pixels\ to\ the\ left.\n
|
||||
comment5.params=
|
||||
comment5.target=void\ moveUp()
|
||||
comment5.text=\n\ Move\ the\ circle\ a\ few\ pixels\ up.\n
|
||||
comment6.params=
|
||||
comment6.target=void\ moveDown()
|
||||
comment6.text=\n\ Move\ the\ circle\ a\ few\ pixels\ down.\n
|
||||
comment7.params=distance
|
||||
comment7.target=void\ moveHorizontal(int)
|
||||
comment7.text=\n\ Move\ the\ circle\ horizontally\ by\ 'distance'\ pixels.\n
|
||||
comment8.params=distance
|
||||
comment8.target=void\ moveVertical(int)
|
||||
comment8.text=\n\ Move\ the\ circle\ vertically\ by\ 'distance'\ pixels.\n
|
||||
comment9.params=distance
|
||||
comment9.target=void\ slowMoveHorizontal(int)
|
||||
comment9.text=\n\ Slowly\ move\ the\ circle\ horizontally\ by\ 'distance'\ pixels.\n
|
||||
numComments=15
|
@@ -0,0 +1,191 @@
|
||||
import java.awt.*;
|
||||
import java.awt.geom.*;
|
||||
|
||||
/**
|
||||
* A circle that can be manipulated and that draws itself on a canvas.
|
||||
*
|
||||
* @author Michael K<>lling and David J. Barnes
|
||||
* @version 2016.02.29
|
||||
*/
|
||||
|
||||
public class Circle
|
||||
{
|
||||
private int diameter;
|
||||
private int xPosition;
|
||||
private int yPosition;
|
||||
private String color;
|
||||
private boolean isVisible;
|
||||
|
||||
/**
|
||||
* Create a new circle at default position with default color.
|
||||
*/
|
||||
public Circle()
|
||||
{
|
||||
diameter = 68;
|
||||
xPosition = 230;
|
||||
yPosition = 90;
|
||||
color = "blue";
|
||||
}
|
||||
|
||||
/**
|
||||
* Make this circle visible. If it was already visible, do nothing.
|
||||
*/
|
||||
public void makeVisible()
|
||||
{
|
||||
isVisible = true;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Make this circle invisible. If it was already invisible, do nothing.
|
||||
*/
|
||||
public void makeInvisible()
|
||||
{
|
||||
erase();
|
||||
isVisible = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the circle a few pixels to the right.
|
||||
*/
|
||||
public void moveRight()
|
||||
{
|
||||
moveHorizontal(20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the circle a few pixels to the left.
|
||||
*/
|
||||
public void moveLeft()
|
||||
{
|
||||
moveHorizontal(-20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the circle a few pixels up.
|
||||
*/
|
||||
public void moveUp()
|
||||
{
|
||||
moveVertical(-20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the circle a few pixels down.
|
||||
*/
|
||||
public void moveDown()
|
||||
{
|
||||
moveVertical(20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the circle horizontally by 'distance' pixels.
|
||||
*/
|
||||
public void moveHorizontal(int distance)
|
||||
{
|
||||
erase();
|
||||
xPosition += distance;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the circle vertically by 'distance' pixels.
|
||||
*/
|
||||
public void moveVertical(int distance)
|
||||
{
|
||||
erase();
|
||||
yPosition += distance;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Slowly move the circle 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 circle 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 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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw the circle with current specifications on screen.
|
||||
*/
|
||||
private void draw()
|
||||
{
|
||||
if(isVisible) {
|
||||
Canvas canvas = Canvas.getCanvas();
|
||||
canvas.draw(this, color, new Ellipse2D.Double(xPosition, yPosition,
|
||||
diameter, diameter));
|
||||
canvas.wait(10);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Erase the circle on screen.
|
||||
*/
|
||||
private void erase()
|
||||
{
|
||||
if(isVisible) {
|
||||
Canvas canvas = Canvas.getCanvas();
|
||||
canvas.erase(this);
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
@@ -0,0 +1,47 @@
|
||||
#BlueJ class context
|
||||
comment0.params=
|
||||
comment0.target=Person()
|
||||
comment0.text=\n\ Create\ a\ new\ person\ at\ default\ position\ with\ default\ color.\n
|
||||
comment1.params=
|
||||
comment1.target=void\ makeVisible()
|
||||
comment1.text=\n\ Make\ this\ person\ visible.\ If\ it\ was\ already\ visible,\ do\ nothing.\n
|
||||
comment10.params=distance
|
||||
comment10.target=void\ slowMoveVertical(int)
|
||||
comment10.text=\n\ Slowly\ move\ the\ person\ vertically\ by\ 'distance'\ pixels.\n
|
||||
comment11.params=newHeight\ newWidth
|
||||
comment11.target=void\ changeSize(int,\ int)
|
||||
comment11.text=\n\ Change\ the\ size\ to\ the\ new\ size\ (in\ pixels).\ Size\ must\ be\ >\=\ 0.\n
|
||||
comment12.params=newColor
|
||||
comment12.target=void\ changeColor(java.lang.String)
|
||||
comment12.text=\n\ Change\ the\ color.\ Valid\ colors\ are\ "red",\ "yellow",\ "blue",\ "green",\n\ "magenta"\ and\ "black".\n
|
||||
comment13.params=
|
||||
comment13.target=void\ draw()
|
||||
comment13.text=\n\ Draw\ the\ person\ with\ current\ specifications\ on\ screen.\n
|
||||
comment14.params=
|
||||
comment14.target=void\ erase()
|
||||
comment14.text=\n\ Erase\ the\ person\ on\ screen.\n
|
||||
comment2.params=
|
||||
comment2.target=void\ makeInvisible()
|
||||
comment2.text=\n\ Make\ this\ person\ invisible.\ If\ it\ was\ already\ invisible,\ do\ nothing.\n
|
||||
comment3.params=
|
||||
comment3.target=void\ moveRight()
|
||||
comment3.text=\n\ Move\ the\ person\ a\ few\ pixels\ to\ the\ right.\n
|
||||
comment4.params=
|
||||
comment4.target=void\ moveLeft()
|
||||
comment4.text=\n\ Move\ the\ person\ a\ few\ pixels\ to\ the\ left.\n
|
||||
comment5.params=
|
||||
comment5.target=void\ moveUp()
|
||||
comment5.text=\n\ Move\ the\ person\ a\ few\ pixels\ up.\n
|
||||
comment6.params=
|
||||
comment6.target=void\ moveDown()
|
||||
comment6.text=\n\ Move\ the\ person\ a\ few\ pixels\ down.\n
|
||||
comment7.params=distance
|
||||
comment7.target=void\ moveHorizontal(int)
|
||||
comment7.text=\n\ Move\ the\ person\ horizontally\ by\ 'distance'\ pixels.\n
|
||||
comment8.params=distance
|
||||
comment8.target=void\ moveVertical(int)
|
||||
comment8.text=\n\ Move\ the\ person\ vertically\ by\ 'distance'\ pixels.\n
|
||||
comment9.params=distance
|
||||
comment9.target=void\ slowMoveHorizontal(int)
|
||||
comment9.text=\n\ Slowly\ move\ the\ person\ horizontally\ by\ 'distance'\ pixels.\n
|
||||
numComments=15
|
@@ -0,0 +1,206 @@
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* A person that can be manipulated and that draws itself on a canvas.
|
||||
*
|
||||
* @author Michael K<>lling and David J. Barnes
|
||||
* @version 2016.02.29
|
||||
*/
|
||||
|
||||
public class Person
|
||||
{
|
||||
private int height;
|
||||
private int width;
|
||||
private int xPosition;
|
||||
private int yPosition;
|
||||
private String color;
|
||||
private boolean isVisible;
|
||||
|
||||
/**
|
||||
* Create a new person at default position with default color.
|
||||
*/
|
||||
public Person()
|
||||
{
|
||||
height = 60;
|
||||
width = 30;
|
||||
xPosition = 280;
|
||||
yPosition = 190;
|
||||
color = "black";
|
||||
isVisible = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make this person visible. If it was already visible, do nothing.
|
||||
*/
|
||||
public void makeVisible()
|
||||
{
|
||||
isVisible = true;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Make this person invisible. If it was already invisible, do nothing.
|
||||
*/
|
||||
public void makeInvisible()
|
||||
{
|
||||
erase();
|
||||
isVisible = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the person a few pixels to the right.
|
||||
*/
|
||||
public void moveRight()
|
||||
{
|
||||
moveHorizontal(20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the person a few pixels to the left.
|
||||
*/
|
||||
public void moveLeft()
|
||||
{
|
||||
moveHorizontal(-20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the person a few pixels up.
|
||||
*/
|
||||
public void moveUp()
|
||||
{
|
||||
moveVertical(-20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the person a few pixels down.
|
||||
*/
|
||||
public void moveDown()
|
||||
{
|
||||
moveVertical(20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the person horizontally by 'distance' pixels.
|
||||
*/
|
||||
public void moveHorizontal(int distance)
|
||||
{
|
||||
erase();
|
||||
xPosition += distance;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the person vertically by 'distance' pixels.
|
||||
*/
|
||||
public void moveVertical(int distance)
|
||||
{
|
||||
erase();
|
||||
yPosition += distance;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Slowly move the person 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 person 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 person with current specifications on screen.
|
||||
*/
|
||||
private void draw()
|
||||
{
|
||||
int bh = (int)(height * 0.7); // body height
|
||||
int hh = (height - bh) / 2; // half head height
|
||||
int hw = width / 2; // half width
|
||||
int x = xPosition;
|
||||
int y = yPosition;
|
||||
if(isVisible) {
|
||||
Canvas canvas = Canvas.getCanvas();
|
||||
int[] xpoints = { x-3, x-hw, x-hw, x-(int)(hw*0.2)-1, x-(int)(hw*0.2)-1, x-hw,
|
||||
x-hw+(int)(hw*0.4)+1, x, x+hw-(int)(hw*0.4)-1, x+hw, x+(int)(hw*0.2)+1,
|
||||
x+(int)(hw*0.2)+1, x+hw, x+hw, x+3, x+(int)(hw*0.6),
|
||||
x+(int)(hw*0.6), x+3, x-3, x-(int)(hw*0.6), x-(int)(hw*0.6) };
|
||||
int[] ypoints = { y, y+(int)(bh*0.2), y+(int)(bh*0.4), y+(int)(bh*0.2),
|
||||
y+(int)(bh*0.5), y+bh, y+bh, y+(int)(bh*0.65), y+bh, y+bh,
|
||||
y+(int)(bh*0.5), y+(int)(bh*0.2), y+(int)(bh*0.4), y+(int)(bh*0.2),
|
||||
y, y-hh+3, y-hh-3, y-hh-hh, y-hh-hh, y-hh-3, y-hh+3 };
|
||||
canvas.draw(this, color, new Polygon(xpoints, ypoints, 21));
|
||||
canvas.wait(10);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Erase the person on screen.
|
||||
*/
|
||||
private void erase()
|
||||
{
|
||||
if(isVisible) {
|
||||
Canvas canvas = Canvas.getCanvas();
|
||||
canvas.erase(this);
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
@@ -0,0 +1,20 @@
|
||||
#BlueJ class context
|
||||
comment0.params=
|
||||
comment0.target=Picture()
|
||||
comment0.text=\n\ Constructor\ for\ objects\ of\ class\ Picture\n
|
||||
comment1.params=
|
||||
comment1.target=void\ draw()
|
||||
comment1.text=\n\ Draw\ this\ picture.\n
|
||||
comment2.params=
|
||||
comment2.target=void\ setBlackAndWhite()
|
||||
comment2.text=\n\ Change\ this\ picture\ to\ black/white\ display\n
|
||||
comment3.params=
|
||||
comment3.target=void\ setColor()
|
||||
comment3.text=\n\ Change\ this\ picture\ to\ use\ color\ display\n
|
||||
comment4.params=
|
||||
comment4.target=void\ doSunset()
|
||||
comment4.text=\n\ Start\ Sunset\n
|
||||
comment5.params=
|
||||
comment5.target=void\ doSunrise()
|
||||
comment5.text=\n\ Start\ Sunrise\n
|
||||
numComments=6
|
@@ -0,0 +1,113 @@
|
||||
/**
|
||||
* This class represents a simple picture. You can draw the picture using
|
||||
* the draw method. But wait, there's more: being an electronic picture, it
|
||||
* can be changed. You can set it to black-and-white display and back to
|
||||
* colors (only after it's been drawn, of course).
|
||||
*
|
||||
* This class was written as an early example for teaching Java with BlueJ.
|
||||
*
|
||||
* @author Michael K<>lling and David J. Barnes
|
||||
* @version 2016.02.29
|
||||
*/
|
||||
public class Picture
|
||||
{
|
||||
private Square wall;
|
||||
private Square window;
|
||||
private Triangle roof;
|
||||
private Circle sun;
|
||||
private Circle sun2;
|
||||
private Person person;
|
||||
private boolean drawn;
|
||||
|
||||
/**
|
||||
* Constructor for objects of class Picture
|
||||
*/
|
||||
public Picture()
|
||||
{
|
||||
wall = new Square();
|
||||
window = new Square();
|
||||
roof = new Triangle();
|
||||
sun = new Circle();
|
||||
//sun2 = new Circle();
|
||||
person = new Person();
|
||||
drawn = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw this picture.
|
||||
*/
|
||||
public void draw()
|
||||
{
|
||||
if(!drawn) {
|
||||
wall.moveHorizontal(-140);
|
||||
wall.moveVertical(20);
|
||||
wall.changeSize(120);
|
||||
wall.makeVisible();
|
||||
|
||||
window.changeColor("black");
|
||||
window.moveHorizontal(-120);
|
||||
window.moveVertical(40);
|
||||
window.changeSize(40);
|
||||
window.makeVisible();
|
||||
|
||||
roof.changeSize(60, 180);
|
||||
roof.moveHorizontal(20);
|
||||
roof.moveVertical(-60);
|
||||
roof.makeVisible();
|
||||
|
||||
sun.changeColor("blue");
|
||||
sun.moveHorizontal(100);
|
||||
sun.moveVertical(-40);
|
||||
sun.changeSize(80);
|
||||
sun.makeVisible();
|
||||
|
||||
//sun2.changeColor("yellow");
|
||||
//sun2.moveHorizontal(30);
|
||||
//sun2.moveVertical(-35);
|
||||
//sun2.changeSize(50);
|
||||
//sun2.makeVisible();
|
||||
drawn = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Change this picture to black/white display
|
||||
*/
|
||||
public void setBlackAndWhite()
|
||||
{
|
||||
wall.changeColor("black");
|
||||
window.changeColor("white");
|
||||
roof.changeColor("black");
|
||||
sun.changeColor("black");
|
||||
//sun2.changeColor("black");
|
||||
}
|
||||
|
||||
/**
|
||||
* Change this picture to use color display
|
||||
*/
|
||||
public void setColor()
|
||||
{
|
||||
wall.changeColor("red");
|
||||
window.changeColor("black");
|
||||
roof.changeColor("green");
|
||||
sun.changeColor("yellow");
|
||||
//sun2.changeColor("green");
|
||||
}
|
||||
|
||||
/**
|
||||
* Start Sunset
|
||||
*/
|
||||
public void doSunset()
|
||||
{
|
||||
sun.slowMoveVertical(250);
|
||||
setBlackAndWhite();
|
||||
}
|
||||
/**
|
||||
* Start Sunrise
|
||||
*/
|
||||
public void doSunrise()
|
||||
{
|
||||
sun.slowMoveVertical(-250);
|
||||
setColor();
|
||||
}
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
Project "house"
|
||||
Authors: Michael K<>lling and David J. Barnes
|
||||
|
||||
This project is part of the material for the book
|
||||
|
||||
Objects First with Java - A Practical Introduction using BlueJ
|
||||
Sixth edition
|
||||
David J. Barnes and Michael K<>lling
|
||||
Pearson Education, 2016
|
||||
|
||||
It is discussed in chapter 1.
|
||||
|
||||
This is a very simple project to demonstrate some characteristics of
|
||||
objects.
|
||||
|
||||
This project is often used after studying the "shapes" project. It
|
||||
adds a class to those ones in "shapes". That class (named "Picture")
|
||||
uses the shapes to draw a picture. It can be used to experiment with
|
||||
modifying source code.
|
Binary file not shown.
@@ -0,0 +1,47 @@
|
||||
#BlueJ class context
|
||||
comment0.params=
|
||||
comment0.target=Square()
|
||||
comment0.text=\n\ Create\ a\ new\ square\ at\ default\ position\ with\ default\ color.\n
|
||||
comment1.params=
|
||||
comment1.target=void\ makeVisible()
|
||||
comment1.text=\n\ Make\ this\ square\ visible.\ If\ it\ was\ already\ visible,\ do\ nothing.\n
|
||||
comment10.params=distance
|
||||
comment10.target=void\ slowMoveVertical(int)
|
||||
comment10.text=\n\ Slowly\ move\ the\ square\ vertically\ by\ 'distance'\ pixels.\n
|
||||
comment11.params=newSize
|
||||
comment11.target=void\ changeSize(int)
|
||||
comment11.text=\n\ Change\ the\ size\ to\ the\ new\ size\ (in\ pixels).\ Size\ must\ be\ >\=\ 0.\n
|
||||
comment12.params=newColor
|
||||
comment12.target=void\ changeColor(java.lang.String)
|
||||
comment12.text=\n\ Change\ the\ color.\ Valid\ colors\ are\ "red",\ "yellow",\ "blue",\ "green",\n\ "magenta"\ and\ "black".\n
|
||||
comment13.params=
|
||||
comment13.target=void\ draw()
|
||||
comment13.text=\n\ Draw\ the\ square\ with\ current\ specifications\ on\ screen.\n
|
||||
comment14.params=
|
||||
comment14.target=void\ erase()
|
||||
comment14.text=\n\ Erase\ the\ square\ on\ screen.\n
|
||||
comment2.params=
|
||||
comment2.target=void\ makeInvisible()
|
||||
comment2.text=\n\ Make\ this\ square\ invisible.\ If\ it\ was\ already\ invisible,\ do\ nothing.\n
|
||||
comment3.params=
|
||||
comment3.target=void\ moveRight()
|
||||
comment3.text=\n\ Move\ the\ square\ a\ few\ pixels\ to\ the\ right.\n
|
||||
comment4.params=
|
||||
comment4.target=void\ moveLeft()
|
||||
comment4.text=\n\ Move\ the\ square\ a\ few\ pixels\ to\ the\ left.\n
|
||||
comment5.params=
|
||||
comment5.target=void\ moveUp()
|
||||
comment5.text=\n\ Move\ the\ square\ a\ few\ pixels\ up.\n
|
||||
comment6.params=
|
||||
comment6.target=void\ moveDown()
|
||||
comment6.text=\n\ Move\ the\ square\ a\ few\ pixels\ down.\n
|
||||
comment7.params=distance
|
||||
comment7.target=void\ moveHorizontal(int)
|
||||
comment7.text=\n\ Move\ the\ square\ horizontally\ by\ 'distance'\ pixels.\n
|
||||
comment8.params=distance
|
||||
comment8.target=void\ moveVertical(int)
|
||||
comment8.text=\n\ Move\ the\ square\ vertically\ by\ 'distance'\ pixels.\n
|
||||
comment9.params=distance
|
||||
comment9.target=void\ slowMoveHorizontal(int)
|
||||
comment9.text=\n\ Slowly\ move\ the\ square\ horizontally\ by\ 'distance'\ pixels.\n
|
||||
numComments=15
|
@@ -0,0 +1,191 @@
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* A square that can be manipulated and that draws itself on a canvas.
|
||||
*
|
||||
* @author Michael K<>lling and David J. Barnes
|
||||
* @version 2016.02.29
|
||||
*/
|
||||
|
||||
public class Square
|
||||
{
|
||||
private int size;
|
||||
private int xPosition;
|
||||
private int yPosition;
|
||||
private String color;
|
||||
private boolean isVisible;
|
||||
|
||||
/**
|
||||
* Create a new square at default position with default color.
|
||||
*/
|
||||
public Square()
|
||||
{
|
||||
size = 60;
|
||||
xPosition = 310;
|
||||
yPosition = 120;
|
||||
color = "red";
|
||||
isVisible = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Make this square visible. If it was already visible, do nothing.
|
||||
*/
|
||||
public void makeVisible()
|
||||
{
|
||||
isVisible = true;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Make this square invisible. If it was already invisible, do nothing.
|
||||
*/
|
||||
public void makeInvisible()
|
||||
{
|
||||
erase();
|
||||
isVisible = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the square a few pixels to the right.
|
||||
*/
|
||||
public void moveRight()
|
||||
{
|
||||
moveHorizontal(20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the square a few pixels to the left.
|
||||
*/
|
||||
public void moveLeft()
|
||||
{
|
||||
moveHorizontal(-20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the square a few pixels up.
|
||||
*/
|
||||
public void moveUp()
|
||||
{
|
||||
moveVertical(-20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the square a few pixels down.
|
||||
*/
|
||||
public void moveDown()
|
||||
{
|
||||
moveVertical(20);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the square horizontally by 'distance' pixels.
|
||||
*/
|
||||
public void moveHorizontal(int distance)
|
||||
{
|
||||
erase();
|
||||
xPosition += distance;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the square vertically by 'distance' pixels.
|
||||
*/
|
||||
public void moveVertical(int distance)
|
||||
{
|
||||
erase();
|
||||
yPosition += distance;
|
||||
draw();
|
||||
}
|
||||
|
||||
/**
|
||||
* Slowly move the square 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 square 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 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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw the square with current specifications on screen.
|
||||
*/
|
||||
private void draw()
|
||||
{
|
||||
if(isVisible) {
|
||||
Canvas canvas = Canvas.getCanvas();
|
||||
canvas.draw(this, color,
|
||||
new Rectangle(xPosition, yPosition, size, size));
|
||||
canvas.wait(10);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Erase the square on screen.
|
||||
*/
|
||||
private void erase()
|
||||
{
|
||||
if(isVisible) {
|
||||
Canvas canvas = Canvas.getCanvas();
|
||||
canvas.erase(this);
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
@@ -0,0 +1,47 @@
|
||||
#BlueJ class context
|
||||
comment0.params=
|
||||
comment0.target=Triangle()
|
||||
comment0.text=\n\ Create\ a\ new\ triangle\ at\ default\ position\ with\ default\ color.\n
|
||||
comment1.params=
|
||||
comment1.target=void\ makeVisible()
|
||||
comment1.text=\n\ Make\ this\ triangle\ visible.\ If\ it\ was\ already\ visible,\ do\ nothing.\n
|
||||
comment10.params=distance
|
||||
comment10.target=void\ slowMoveVertical(int)
|
||||
comment10.text=\n\ Slowly\ move\ the\ triangle\ vertically\ by\ 'distance'\ pixels.\n
|
||||
comment11.params=newHeight\ newWidth
|
||||
comment11.target=void\ changeSize(int,\ int)
|
||||
comment11.text=\n\ Change\ the\ size\ to\ the\ new\ size\ (in\ pixels).\ Size\ must\ be\ >\=\ 0.\n
|
||||
comment12.params=newColor
|
||||
comment12.target=void\ changeColor(java.lang.String)
|
||||
comment12.text=\n\ Change\ the\ color.\ Valid\ colors\ are\ "red",\ "yellow",\ "blue",\ "green",\n\ "magenta"\ and\ "black".\n
|
||||
comment13.params=
|
||||
comment13.target=void\ draw()
|
||||
comment13.text=\n\ Draw\ the\ triangle\ with\ current\ specifications\ on\ screen.\n
|
||||
comment14.params=
|
||||
comment14.target=void\ erase()
|
||||
comment14.text=\n\ Erase\ the\ triangle\ on\ screen.\n
|
||||
comment2.params=
|
||||
comment2.target=void\ makeInvisible()
|
||||
comment2.text=\n\ Make\ this\ triangle\ invisible.\ If\ it\ was\ already\ invisible,\ do\ nothing.\n
|
||||
comment3.params=
|
||||
comment3.target=void\ moveRight()
|
||||
comment3.text=\n\ Move\ the\ triangle\ a\ few\ pixels\ to\ the\ right.\n
|
||||
comment4.params=
|
||||
comment4.target=void\ moveLeft()
|
||||
comment4.text=\n\ Move\ the\ triangle\ a\ few\ pixels\ to\ the\ left.\n
|
||||
comment5.params=
|
||||
comment5.target=void\ moveUp()
|
||||
comment5.text=\n\ Move\ the\ triangle\ a\ few\ pixels\ up.\n
|
||||
comment6.params=
|
||||
comment6.target=void\ moveDown()
|
||||
comment6.text=\n\ Move\ the\ triangle\ a\ few\ pixels\ down.\n
|
||||
comment7.params=distance
|
||||
comment7.target=void\ moveHorizontal(int)
|
||||
comment7.text=\n\ Move\ the\ triangle\ horizontally\ by\ 'distance'\ pixels.\n
|
||||
comment8.params=distance
|
||||
comment8.target=void\ moveVertical(int)
|
||||
comment8.text=\n\ Move\ the\ triangle\ vertically\ by\ 'distance'\ pixels.\n
|
||||
comment9.params=distance
|
||||
comment9.target=void\ slowMoveHorizontal(int)
|
||||
comment9.text=\n\ Slowly\ move\ the\ triangle\ horizontally\ by\ 'distance'\ pixels.\n
|
||||
numComments=15
|
@@ -0,0 +1,195 @@
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* A triangle that can be manipulated and that draws itself on a canvas.
|
||||
*
|
||||
* @author Michael K<>lling and David J. Barnes
|
||||
* @version 2016.02.29
|
||||
*/
|
||||
|
||||
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 = 60;
|
||||
width = 70;
|
||||
xPosition = 210;
|
||||
yPosition = 140;
|
||||
color = "green";
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,118 @@
|
||||
#BlueJ package file
|
||||
dependency1.from=Triangle
|
||||
dependency1.to=Canvas
|
||||
dependency1.type=UsesDependency
|
||||
dependency2.from=Picture
|
||||
dependency2.to=Square
|
||||
dependency2.type=UsesDependency
|
||||
dependency3.from=Picture
|
||||
dependency3.to=Triangle
|
||||
dependency3.type=UsesDependency
|
||||
dependency4.from=Picture
|
||||
dependency4.to=Circle
|
||||
dependency4.type=UsesDependency
|
||||
dependency5.from=Circle
|
||||
dependency5.to=Canvas
|
||||
dependency5.type=UsesDependency
|
||||
dependency6.from=Square
|
||||
dependency6.to=Canvas
|
||||
dependency6.type=UsesDependency
|
||||
dependency7.from=Person
|
||||
dependency7.to=Canvas
|
||||
dependency7.type=UsesDependency
|
||||
dependency8.from=Picture
|
||||
dependency8.to=Person
|
||||
dependency8.type=UsesDependency
|
||||
objectbench.height=76
|
||||
objectbench.width=940
|
||||
package.editor.height=874
|
||||
package.editor.width=814
|
||||
package.editor.x=0
|
||||
package.editor.y=31
|
||||
package.numDependencies=8
|
||||
package.numTargets=6
|
||||
package.showExtends=true
|
||||
package.showUses=true
|
||||
project.charset=x-MacRoman
|
||||
readme.editor.height=557
|
||||
readme.editor.width=826
|
||||
readme.editor.x=53
|
||||
readme.editor.y=23
|
||||
target1.editor.height=717
|
||||
target1.editor.width=900
|
||||
target1.editor.x=53
|
||||
target1.editor.y=60
|
||||
target1.height=50
|
||||
target1.name=Circle
|
||||
target1.naviview.expanded=true
|
||||
target1.showInterface=false
|
||||
target1.type=ClassTarget
|
||||
target1.typeParameters=
|
||||
target1.width=80
|
||||
target1.x=150
|
||||
target1.y=230
|
||||
target2.editor.height=774
|
||||
target2.editor.width=857
|
||||
target2.editor.x=660
|
||||
target2.editor.y=201
|
||||
target2.height=50
|
||||
target2.name=Picture
|
||||
target2.naviview.expanded=true
|
||||
target2.showInterface=false
|
||||
target2.type=ClassTarget
|
||||
target2.typeParameters=
|
||||
target2.width=80
|
||||
target2.x=70
|
||||
target2.y=70
|
||||
target3.editor.height=781
|
||||
target3.editor.width=898
|
||||
target3.editor.x=53
|
||||
target3.editor.y=51
|
||||
target3.height=50
|
||||
target3.name=Canvas
|
||||
target3.naviview.expanded=true
|
||||
target3.showInterface=false
|
||||
target3.type=ClassTarget
|
||||
target3.typeParameters=
|
||||
target3.width=80
|
||||
target3.x=50
|
||||
target3.y=310
|
||||
target4.editor.height=727
|
||||
target4.editor.width=936
|
||||
target4.editor.x=53
|
||||
target4.editor.y=60
|
||||
target4.height=50
|
||||
target4.name=Triangle
|
||||
target4.naviview.expanded=true
|
||||
target4.showInterface=false
|
||||
target4.type=ClassTarget
|
||||
target4.typeParameters=
|
||||
target4.width=80
|
||||
target4.x=350
|
||||
target4.y=150
|
||||
target5.editor.height=722
|
||||
target5.editor.width=879
|
||||
target5.editor.x=53
|
||||
target5.editor.y=60
|
||||
target5.height=50
|
||||
target5.name=Square
|
||||
target5.naviview.expanded=true
|
||||
target5.showInterface=false
|
||||
target5.type=ClassTarget
|
||||
target5.typeParameters=
|
||||
target5.width=80
|
||||
target5.x=250
|
||||
target5.y=190
|
||||
target6.editor.height=697
|
||||
target6.editor.width=988
|
||||
target6.editor.x=53
|
||||
target6.editor.y=90
|
||||
target6.height=50
|
||||
target6.name=Person
|
||||
target6.naviview.expanded=true
|
||||
target6.showInterface=false
|
||||
target6.type=ClassTarget
|
||||
target6.typeParameters=
|
||||
target6.width=80
|
||||
target6.x=450
|
||||
target6.y=120
|
Reference in New Issue
Block a user