-
Notifications
You must be signed in to change notification settings - Fork 2
/
Rectangle.java
184 lines (166 loc) · 5.2 KB
/
Rectangle.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
/**
* Models a simple, solid rectangle.
* This class represents a Rectabgle object. When combined with the GameArena class,
* instances of the Rectangle class can be displayed on the screen.
*/
public class Rectangle
{
// The following instance variables define the
// information needed to represent a Rectangle
// Feel free to more instance variables if you think it will
// support your work...
private double xPosition; // The X coordinate of this Rectangle
private double yPosition; // The Y coordinate of this Rectangle
private double width; // The width of this Rectangle
private double height; // The height of this Rectangle
private int layer; // The layer this Rectangle is on.
private String colour; // The colour of this Rectangle
// Permissable colours are:
// BLACK, BLUE, CYAN, DARKGREY, GREY,
// GREEN, LIGHTGREY, MAGENTA, ORANGE,
// PINK, RED, WHITE, YELLOW
/**
* Constructor. Creates a Rectangle with the given parameters.
* @param x The x co-ordinate position of top left corner of the Rectangle (in pixels)
* @param y The y co-ordinate position of top left corner of the Rectangle (in pixels)
* @param w The width of the Rectangle (in pixels)
* @param h The height of the Rectangle (in pixels)
* @param col The colour of the Rectangle (Permissable colours are: BLACK, BLUE, CYAN, DARKGREY, GREY, GREEN, LIGHTGREY, MAGENTA, ORANGE, PINK, RED, WHITE, YELLOW or #RRGGBB)
*/
public Rectangle(double x, double y, double w, double h, String col)
{
this.xPosition = x;
this.yPosition = y;
this.width = w;
this.height = h;
this.colour = col;
this.layer = 0;
}
/**
* Constructor. Creates a Rectangle with the given parameters.
* @param x The x co-ordinate position of top left corner of the Rectangle (in pixels)
* @param y The y co-ordinate position of top left corner of the Rectangle (in pixels)
* @param w The width of the Rectangle (in pixels)
* @param h The height of the Rectangle (in pixels)
* @param col The colour of the Rectangle (Permissable colours are: BLACK, BLUE, CYAN, DARKGREY, GREY, GREEN, LIGHTGREY, MAGENTA, ORANGE, PINK, RED, WHITE, YELLOW or #RRGGBB)
* @param layer The layer this Rectangle is to be drawn on. Objects with a higher layer number are always drawn on top of those with lower layer numbers.
*/
public Rectangle(double x, double y, double w, double h, String col, int layer)
{
this.xPosition = x;
this.yPosition = y;
this.width = w;
this.height = h;
this.colour = col;
this.layer = layer;
}
/**
* Obtains the current position of this Rectangle.
* @return the X coordinate of this Rectangle within the GameArena.
*/
public double getXPosition()
{
return xPosition;
}
/**
* Obtains the current position of this Rectangle.
* @return the Y coordinate of this Rectangle within the GameArena.
*/
public double getYPosition()
{
return yPosition;
}
/**
* Moves the current position of this Rectangle to the given X co-ordinate
* @param x the new x co-ordinate of this Rectangle
*/
public void setXPosition(double x)
{
this.xPosition = x;
}
/**
* Moves the current position of this Rectangle to the given Y co-ordinate
* @param y the new y co-ordinate of this Rectangle
*/
public void setYPosition(double y)
{
this.yPosition = y;
}
/**
* Obtains the width of this Rectangle.
* @return the width of this Rectangle,in pixels.
*/
public double getWidth()
{
return width;
}
/**
* Sets the width of this Rectangle to the given value
* @param w the new width of this Rectangle, in pixels.
*/
public void setWidth(double w)
{
width = w;
}
/**
* Obtains the height of this Rectangle.
* @return the height of this Rectangle,in pixels.
*/
public double getHeight()
{
return height;
}
/**
* Sets the height of this Rectangle to the given value
* @param h the new height of this Rectangle, in pixels.
*/
public void setHeight(double h)
{
height = h;
}
/**
* Obtains the layer of this Rectangle.
* @return the layer of this Rectangle.
*/
public int getLayer()
{
return layer;
}
/**
* Obtains the colour of this Rectangle.
* @return a textual description of the colour of this Rectangle.
*/
public String getColour()
{
return colour;
}
/**
* Sets the colour of this Rectangle.
* @param c the new colour of this Rectangle, as a String value. Permissable colours are: BLACK, BLUE, CYAN, DARKGREY, GREY, GREEN, LIGHTGREY, MAGENTA, ORANGE, PINK, RED, WHITE, YELLOW.
*/
public void setColour(String c)
{
colour = c;
}
/**
* Moves this Rectangle by the given amount.
*
* @param dx the distance to move on the x axis (in pixels)
* @param dy the distance to move on the y axis (in pixels)
*/
public void move(double dx, double dy)
{
xPosition += dx;
yPosition += dy;
}
/**
* Determines if this Rectangle is overlapping the given rectangle.
*
* @param r the rectangle to test for collision
* @return true of this rectangle is overlapping the rectangle r, false otherwise.
*/
public boolean collides(Rectangle r)
{
return (xPosition + width > r.xPosition && xPosition < r.xPosition + r.width) && (yPosition + height > r.yPosition && yPosition < r.yPosition + r.height);
}
}