I'm trying to make a test program, but I appear to have encountered an error, I think with a for loop.
My goal is to make an 8x8 area of squares be randomly generated as black or white, although my eventual goal is more complex.
I have a "Block" class, which has 3 variables in it (I forget the name for that sort of variable, you know, in a class...):
isSolid, which keeps track of whether the block is black or white.
X and Y coordinates, which keep track of where the block is in a grid.
I create a list of blocks, depending on the size x and y size of the "world" given to the generator.
I then give x and y values to these blocks, based on the spot in both of two for loops, as well as which block it is on: the x for loop, which only loops once the y loop has finished one iteration (nested for loops). Apparently, I have some issue within the y for loop; but I can't figure out exactly how to fix it. I think maybe the for loop is going to far, but I can't figure out where.
Here's my code. I don't know if there are [code] tags for this forum, but I can do spoilers.
The Block class:
Java Code:
public class Block {
boolean isSolid = false;
int xCoord;
int yCoord;
}
The GameWorld class:
Java Code:
import java.util.Random;
public class GameWorld {
int worldSizeX;
int worldSizeY;
Block[] worldBlockList;
public GameWorld(int x, int y) {
//Assign Stuff
worldSizeX = x;
worldSizeY = y;
worldBlockList = new Block[x * y];
//Set up each Block in the list to remember its X and Y coordinates
int totalProgress = 0;
int xProgress;
int yProgress;
for (xProgress = 0; xProgress < worldSizeX; xProgress++) {
for (yProgress = 0; yProgress < worldSizeY - 1; yProgress++) {
//TODO - Fix this. The issue is NOT with x/yProgress, probably
worldBlockList[totalProgress].xCoord = xProgress;
worldBlockList[totalProgress].yCoord = yProgress;
totalProgress++;
}
}
}
public void genWorld() {
//TODO - SUPER TEMPORARY WORLDGEN
Random random = new Random();
for (int i = 0; i > (worldSizeX * worldSizeY); i++) {
worldBlockList[i].isSolid = random.nextBoolean();
}
}
//I might not need this
public void wipeWorld() {
for (int i = 0; i > (worldSizeX * worldSizeY); i++) {
worldBlockList[i].isSolid = false;
}
}
}
My error report (the issue seems to be with line 24):
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at GameWorld.<init>(GameWorld.java:24)
at GamePanel.<init>(GamePanel.java:10)
at Run.initUI(Run.java:17)
at Run.<init>(Run.java:10)
at Run$1.run(Run.java:31)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
I hope that helped, and I hope you can help me. :)
Hmm... I hope those spoilers worked. On an unrelated note, could someone tell me what are used as spoiler tags on these forums?
EDIT: Rats, the formatting appears to have gotten borked. How am I supposed to post code here?
EDITEDIT: Figured out code tags. No need to explain now. :P
No comments:
Post a Comment