import acm.graphics.*; import acm.program.*; import java.awt.Color; import java.util.Iterator; import java.util.Random; import java.util.List; public class LAB1 { final static int BLOCKWIDTH = 50; final static int BLOCKHEIGHT = 10; final static int NBLOCKS = 10; final static int BLOCKROWS = 5; final static int ROWZERO = 50; final static int ROWSEPARATION = (5*BLOCKHEIGHT); final static int WIDTH = (BLOCKWIDTH*NBLOCKS); final static int HEIGHT = 600; public static java.util.List<acm.graphics.GRect> createPlayfield() { Random r = new Random(); List<GRect> l = null; int x = 0; int y = ROWZERO - BLOCKHEIGHT; Color c = new Color(r.nextInt(256)); addBrick(l,x,y,BLOCKWIDTH,BLOCKHEIGHT,c); for (int i = 0; i < BLOCKROWS; i++) { i = (i * ROWSEPARATION) + ROWZERO; for(int j = 0; j < NBLOCKS; j++) { j = j * BLOCKWIDTH; } } } public static void addBrick(java.util.List<acm.graphics.GRect> l, int x, int y, int width, int height, java.awt.Color c) { l.add(createBrick(x,y,WIDTH,HEIGHT,c)); } public static acm.graphics.GRect createBrick(int x, int y, int width, int height, java.awt.Color c) { GRect s = new GRect(x,y,WIDTH,HEIGHT); return s; } public static acm.graphics.GRect intersect(acm.graphics.GObject o,java.util.List<acm.graphics.GRect> l) { GRectangle r = o.getBounds(); for(GRect e : l) { if(e.getBounds().intersects(r)) return e; } return null; }
My main problem is the createplayfield method, this is the description to make it:
createPlayfield is a static method that returns a List of GRects. Each GRect is coloured randmoly and is
of size BLOCKWIDTH x BLOCKHEIGHT. The blocks are placed in a grid BLOCKROWS height x
NBLOCKS. The i'th row of blocks has its upper edge aligned with row i * ROWSEPARATION +
ROWZERO. The j'th column of blocks has its left edge aligned with j * BLOCKWIDTH. You may
find it useful to implement this method using the addBrick method below.
API's : The acm.graphics.GRect Class.
As you can see I tryed to do it but haven't done well, it's a very confusing description.