Results 1 to 2 of 2
  1. #1
    boumasmoud is offline Member
    Join Date
    Nov 2011
    Posts
    1
    Rep Power
    0

    Default Brick wall using BLEUJ

    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));
    }
    }

    }

  2. #2
    Junky's Avatar
    Junky is offline Grand Poobah
    Join Date
    Jan 2011
    Location
    Dystopia
    Posts
    3,779
    Rep Power
    7

Similar Threads

  1. Brick breaker game Code
    By Mahesh Ratan in forum AWT / Swing
    Replies: 6
    Last Post: 03-26-2014, 05:30 PM
  2. Only one wall block?
    By werner291 in forum New To Java
    Replies: 4
    Last Post: 09-28-2011, 01:47 PM
  3. Brick Breaker
    By ivlatt in forum Java Gaming
    Replies: 5
    Last Post: 04-22-2011, 07:47 AM
  4. Wall bug on physics simulation
    By mustachMan in forum New To Java
    Replies: 2
    Last Post: 07-14-2010, 05:56 AM
  5. need help with brick breaker (breakout)
    By blackmatrix00 in forum Java Applets
    Replies: 3
    Last Post: 05-24-2010, 07:25 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •