Hi everybody,

I have the following question which has to do with my homework for Java.

It`s about this question:"You will probably find it easier to write the code to

draw your wall if you first write a private method called drawRow which draws a row of n

bricks starting at coordinates (x, y). Another private method called makeBrick

should create a new Rectangle object at the position (X,Y) and make it visible. Each

brick should be created as a Rectangle object, 54 pixels wide and 16 pixels high. The

rectangle object representing the brick should be added to the ArrayList called

bricks."

I have written the following code for the above two methods. My question is how can I create a row of 8 bricks. I have managed to get one brick to be shown but they need to be placed next to eachother. So how do I place them next to each other? See my two methods down here. Beneath the methods you will find the rest of the code of the whole class.

/**

* Create a new rectangle object representing a brick and add it to the arraylist.

*/

private void makeBrick() {

brick = new Rectangle();

brick.makeVisible();

brick.changeSize(54, 16);

brick.moveHorizontal(10);

brick.moveVertical(550);

bricks.add(brick);

}

/**

* Create a new row of 8 bricks.

*/

private void drawRow() {

Integer r=0;

while(r < 9){

makeBrick();

r++;

}

}

import java.util.ArrayList;

/**

* Write a description of class BrickWall here.

*

* @author (your name)

* @version (a version number or a date)

*/

public class BrickWall

{

// instance variables - replace the example below with your own

private Integer bWidth;

private Integer bHeight;

private Integer numRows;

private Integer rowLength;

private ArrayList<String> colors;

private ArrayList<Rectangle> bricks;

private Boolean decrease;

private Boolean isSymmetric;

private Boolean isMultiColor;

private Integer currentColor;

private Integer startX;

private Integer startY;

private Rectangle brick;

/**

* Constructor for objects of class BrickWall.

* @param rows The number of rows in the wall

* @param rowlen The maximum number of bricks in a row

* @param isMultiColor when false all bricks are the same colour. When true the colours cycle through the 6 colours.

* @param decrease If true subtract 2 from rowLen for each row drawn

* @param isSymmetric if decrease is greater than 0 and isSymmetric is true the wall is a pyramid shape, otherwise it is a rectangle or a right angle triangle.

*/

public BrickWall(Integer rows, Integer rowLen)

{

// initialise instance variables

setUpColors();

bWidth = 54;

bHeight = 16;

startX = 10;

startY = 550;

bricks = new ArrayList<Rectangle>();

currentColor = 0;

setNumRows(rows);

setRowLength(rowLen);

this.isMultiColor = false;

this.decrease = false;

this.isSymmetric = false;

}

private void setUpColors() {

colors = new ArrayList<String>();

colors.add("red");

colors.add("yellow");

colors.add("blue");

colors.add("green");

colors.add("magenta");

colors.add("black");

}

/**

* Toggle whether the wall is multicoloured.

*/

public void toggleMultiColour() {

isMultiColor = !isMultiColor;

currentColor = 0;

}

/**

* Toggle whether the decrease in a row length is symmetric.

*/

public void toggleSymmetric() {

isSymmetric = !isSymmetric;

}

/**

* Toggle whether the length of a new row is one less than the length of the previous row.

*/

public void toggleDecrease() {

decrease = ! decrease;

}

/**

* @return the number of bricks in the current wall.

*/

public Integer getNumberOfBricks() {

return bricks.size();

}

/**

* Set the length of a row. There can be no more than 22 bricks in a row.

* @param len The number of bricks in a row. If len is less than or equal

* to zero OR len is greater than 22, the row length will be assigned the value 22.

* Otherwise the length of a row will be assigned the value of len.

*/

public void setRowLength(Integer len) {

if (len <= 0 || len > 22) {

rowLength = 22;

} else {

rowLength = len;

}

}

/**

* Set the maximum number of rows in the wall. If the length of a row decreases,

* there may not be this many rows in the wall.

* @param rows The maximum number of rows in the wall. If rows is less than

* or equal to zero OR rows is greater than 30, the number of rows will be assigned the value 30.

* Otherwise the number of rows will be assigned the value of rows.

*/

public void setNumRows(Integer rows) {

if (rows <= 0 || rows > 30) {

numRows = 30;

} else {

numRows = rows;

}

}

/**

* Create a new rectangle object representing a brick and add it to the arraylist.

*/

private void makeBrick() {

brick = new Rectangle();

brick.makeVisible();

brick.changeSize(54, 16);

brick.moveHorizontal(10);

brick.moveVertical(550);

bricks.add(brick);

}

/**

* Create a new row of 8 bricks.

*/

private void drawRow() {

Integer r=0;

while(r < 9){

makeBrick();

r++;

}

}

/**

* Draw the wall. The first brick will be positioned at the coordinates (10, 550).

* The number of bricks in a row is specified by setRowLength(). The maximum number of rows

* is specified by setNumRows(). If decrease is true, each subsequent row of bricks

* contains one brick less than the previous row. If symmetric is true AND decrease is true then

* the wall is pyramid shaped. If symmetric is false AND decrease is true then the wall is shaped

* like a right angle triangle.

*/

public void draw()

{

eraseWall();

//------------------------------

drawRow();

boolean decrease = false;

boolean symmetric = false;

//------------------------------

}

public void eraseWall() {

Canvas canvas = Canvas.getCanvas();

for (int i=0; !bricks.isEmpty(); i++) {

canvas.erase(bricks.remove(0));

}

}

}