JAVA CODING - Implementing methods for a game, API

  • Context: Comp Sci 
  • Thread starter Thread starter geforce
  • Start date Start date
  • Tags Tags
    Coding Game Java
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
3 replies · 2K views
geforce
Messages
26
Reaction score
0
Code:
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;
	}

Problem I have is the createPlayfield() method, I have no idea on what to do, this is the description..

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.
 
Last edited:
on Phys.org
geforce said:
As you can see I tryed to do it but haven't done well, it's a very confusing description.

What does "haven't done well" mean? Are you getting output? Compile-time errors? Run-time errors? Help us out here.
 
Code:
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),r.nextInt(256),r.nextInt(256));
      // Where to implement how to insert the blocks into a grid?
     for (i = 0; i <= BLOCKROWS; i++) // 
     {// How to implement that i'th row is aligned with i * ROWSEPARATION + ROWZERO
        i = i * ROWSEPARATION + ROWZERO;
          for (j = 0; j <= NBLOCKS; j++) 
          {// How to implement that i'th row is aligned with j x BLOCKWIDTH;         
             j = j * BLOCKWIDTH;
          }
             addBrick(l,x,y,BLOCKWIDTH,BLOCKHEIGHT,c); // How to implement i and j into the list of grects.
      }
        return l;
}

These are my problems and there's some more, I think my other methods are wrong too.

I know what to do but I don't know where to implement the code, I don't know how to that's why I need help, If I knew the design I would of done it myself, I just don't know "Where to put the code" and "Where it belongs".

The things I put in the comments are my main issues in this method and also that I'm not sure if I'm intializing variables that I don't need to before the constructor of addBrick, or if I'm adding it too late or without a proper loop etc.