I don't know how to make sure the random maze can lead from the entry on the right side to the exit on the left side without any wall block the path. This is my code I am doing so far. Can everybody give me a hint or algorithm to achieve the simple maze (entry/exit)? Thank you! P/S my problem is the maze generator doesn't ensure the path to the exit...(get stuck)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define SIZE 12
void mazeGenerator(char [][SIZE]);
int main(void)
{
char maze[SIZE][SIZE];
srand((unsigned int)time(NULL));
mazeGenerator(maze);
return 0;
}
void mazeGenerator(char a[SIZE][SIZE])
{
size_t row,column = 0, r;
// initialize '#' to all positions of left-hand wall
for ( row = 0; row < SIZE; ++row )
{
a[row][column] = '#';
}
// initialize '#' to all positions of left-hand wall
for ( row = 0; row < SIZE; ++row )
{
a[row][SIZE - 1] = '#';
}
// initialize '.' to left-hand wall random positions from 1 -> 10
row = rand() % 11 + 1;
a[row][0] = '.';
// initialize '.' to right-hand wall random positions from 1 -> 10
row = rand() % 11 + 1;
a[row][SIZE - 1] = '.';
// intialize '#' to all positions of top maze
for (column = 1; column < SIZE - 1; ++column)
{
a[0][column] = '#';
}
// intialize '#' to all positions of bottom maze
for (column = 1; column < SIZE - 1; ++column)
{
a[SIZE - 1][column] = '#';
}
// print maze
puts("");
puts("** Maze Generator by Huy Le **\n");
for (row = 0; row < SIZE; ++row)
{
for (column = 0; column < SIZE; ++column)
{
printf_s("%2c",a[row][column]);
}
puts("");
}
puts("");
}
You should use one of the well-established maze generation algorithms. Here is a very short C++ implementation of depth first search (DFS) algorithm:
http://github.com/corporateshark/random-maze-generator
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With