Maze Generator Algorithm For simplicity, let's keep the walls and paths the same width, 1 block. Your maze path will by X by Y. When you add in the thickness of the walls, it will be 2X+1 by 2Y+1. To make other parts of the algorithm simpler, assume a hollow border around the maze, making your array 2X+3 by 2Y+3. Start by filling in the maze with 'X' For a 4x4 maze: ------------- ' '--Clear '#'--Set | | | ######### | 1. Make array M[A,B] [0,0] will be considered upper left | ######### | where A is from 0 ... 2X+2, and B is 0 ... 2Y+2 | ######### | | ######### | 2. Clear the edge of the array, | ######### | but set the inside as pictured to the left. | ######### | | ######### | 3. Start at 2,2 (actually you can be random, but...) | ######### | | ######### | 4. Clear the current point | | ------------- 5. Pick a random point that is 'set' 2 points away (either ------------- horizontally or virtically). If no such point, then | | backtrack to the previous old point and repeat step 5. | ######### | | # ##### | 6. Clear the point between the new point and the old point. | ######### | Also save the old point for when the program must backtrack. | ######### | You can save the point either recursively, or in an array, | ######### | etc... | ######### | | ######### | 7. Goto step 4 | ######### | The program finishes after step 5 needs to backtrack, but has | ######### | no saved points left to backtrack to... The second picture to | | the left is (one of two possible views) after the second ------------- itteration through step 4. ------------- | | | ######### | | # # # | | ### ### # | | ### # | One possible result the first time step 5 needs to backtrack. | ######### | Notice it will have to backtrack twice in a row... | ######### | | ######### | | ######### | | ######### | | | ------------- ------------- | | | ######### | | # # # | | ### ### # | | # # # | Possible final maze... | # ##### # | | # # # | | # ### ### | | # # | | ######### | | | ------------- Oh, at the end you can just place a start and exit point anywhere (or always at the same locations). There will be exactly one path from any two points on the maze.