Welcome to the Java Programming Forums

The professional, friendly Java community. 21,500 members and growing!

The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.

>> REGISTER NOW TO START POSTING

1. ## Recursive Maze Help

Hi All,

I am having a problem with this maze project that I was assigned in my programming and data structures class. I have everything done, except for a few minor steps of the Generator method here it is:

```// The Gen n Method: Recursively Generates The Maze

private void genFile(int startX, int startY, int endX, int endY) {
Random gen = new Random();

// *** BASES CASES ***

// Check if we can divide the space

boolean wallPossible = false;

// Check all vertical wall placements

for (int i = startX + 1; i < endX; i++) {
if ( ((endY+1 < n) || maze[i][endY+1] != '_')    &&
((startY-1 >= 0) || maze[i][startY-1] != '_') ) {

// Do this when there is no wall opening mark on either side

wallPossible = true;
break;
}
}

if (!wallPossible) {

// Check all horizontal wall placements

for (int i=startY+1; i<endY; i++) {
if ( ((endX+1 < n) || maze[endX+1][i] != '_')    &&
((startX-1 >= 0) || maze[startX-1][i] != '_') ) {

// Do this when there is no wall opening mark on either side

wallPossible = true;
break;

}
}
}

if (!wallPossible) return;

// *** RECURSIVE CASE ***
// Once here, it means we can divide the space

// Loop that keeps asking for direction and location for a wall until valid

int dir = 0;
int k = 0;

do {

// Pick a random direction

dir = gen.nextInt(2);

// Pick a random wall location

if (dir == 0) {

// Generate a random number between the boundaries
// that will represent the (vertical) wall location

k = gen.nextInt (endy - starty - 1) + starty + 1;

} else {

// Generate a random number between the boundaries
// that will represent the (horizontal) wall location

k = gen.nextInt(endY - startY - 1) + startY + 1;

}

// Check if valid

//for (int i = startX + 1; i < endX; i++) {
if (dir==0) {
if ( ((endY+1 < n) || maze[k][endY+1] != '_')    &&
((startY-1 >= 0) || maze[k][startY-1] != '_') ) {

// Do this when there is no wall opening mark on either side

wallPossible = true;
break;
}
}

else {

// Check all horizontal wall placements

if ( ((endX+1 < n) || maze[endX+1][k] != '_')    &&
((startX-1 >= 0) || maze[startX-1][k] != '_') ) {

// Do this when there is no wall opening mark on either side

wallPossible = true;
break;
}
}

} while (!wallPossible);

// Draw the wall

if (dir==0)
{
for (int y = startY; y <= endY; y++)
maze [k][y] = '*';

}

else {
for (int x = startX; x <= endX; x++)
maze[k][x] = '*';

}

// Pick a random passage location on the wall
// Make the passage

int r = gen.nextInt(endY-startY) + 1;

if (dir == 0){
maze [k][r] = '_';
}
else{
maze [r][k] = '_';
}

// Recursively split the two spaces

// Find the coordinates of the first space

// Find the coordinates of the second space

// Call genFile for both space
// genFile( , , , );
// genFile( , , , );

}```

2. ## Re: Recursive Maze Help

Please don't triple post your question in the forum. Once will do. If an answer is that important to you, please read the forum FAQ to see how to format it so folks can read the code, understand it, and be able to help you.

3. ## Re: Recursive Maze Help

Do you have any advice for me??

4. ## Re: Recursive Maze Help

Originally Posted by Deejay1992
Do you have any advice for me??
You have not yet said what your goals are, or even asked a question related to your code. I'd presume you would rather us not guess...my advice would be to ask a specific question, read the link in my signature entitled 'Getting Help', format your code with proper indentations, and post an SSCCE (again, see my signature)

5. ## Re: Recursive Maze Help

I just need to know how to recursively split the two spaces:

```if (dir == 0){
maze [k][r] = '_';
}
else{
maze [r][k] = '_';
}```

Find the coordinates for space 1 and 2
Then call genFile for both spaces
genFIle( , , , );
genFIle( , , , );

6. ## Re: Recursive Maze Help

I suggest reading post #4 again...sorry but I don't know what you mean by 'space' or 'split'. Explaining these as if we don't know what the heck you are talking about (which is close to the truth) will do a lot to help you get help.

This thread has been cross posted here:

Java Programming Forums Cross Posting Rules

7. ## Re: Recursive Maze Help

Originally Posted by copeg
I suggest reading post #4 again...sorry but I don't know what you mean by 'space' or 'split'. Explaining these as if we don't know what the heck you are talking about (which is close to the truth) will do a lot to help you get help.

This thread has been cross posted here: