MazeGenerator (c++ program)


Using DFS to define a MazeGenerator and MazeSolver

4 attachmentsSlide 1 of 4attachment_1attachment_1attachment_2attachment_2attachment_3attachment_3attachment_4attachment_4

Unformatted Attachment Preview

maze generator
The required algorithm
The required algorithm must generate a ​perfect maze​. Viewing a maze as a two-dimensional
matrix of square cells, a perfect maze is one in which any two cells are connected by a
single unique path. An important consequence of a maze being perfect is that all cells in a
perfect maze are reachable from the starting point by some unique path, meaning that
perfect mazes are guaranteed to have a solution. They’re also guaranteed to have a unique
solution, which makes them more interesting to solve.
To generate a perfect maze, you’ll use a recursive algorithm to “dig tunnels” of various
lengths. It starts with a maze in which all of the possible walls exist (i.e., a wall exists on
every side of every cell), then continues removing walls until a perfect maze has been
constructed. Naturally, it requires some care not to remove walls that would cause the maze
to be imperfect; in our tunnel-digging algorithm, we have to be sure we stop digging before
we knock out walls that would lead to places we’ve already been.
The algorithm works, then, by starting at a particular cell (and it doesn’t matter, ultimately,
which cell you start from), and does the following:

Mark the current cell as “visited.”
While the current cell has any adjacent cells that have not yet been visited…
○ Choose one of the unvisited adjacent cells at random. Randomness is
important here, or your algorithm will always generate the same maze.
○ Remove the wall between the current cell and the cell you just chose.
○ Recursively call this algorithm, with the chosen cell becoming the current cell.
As you generate your maze, you’ll need to call member functions on the ​Maze​ object that
was provided as a parameter. Don’t assume anything in particular about that ​Maze​ object,
other than it has the correct width and height; make any changes you need to make in order
to achieve the correct result, and make sure it works regardless of what walls are in place (or
not in place) when your algorithm is called
maze solution
The required algorithm
The required algorithm must solve the maze using a recursive algorithm with ​backtracking​. A
backtracking algorithm is one that recursively investigates all of the possibilities by moving
down a path that hopefully leads to a solution and then, if that path fails, backing up to the
nearest place where some untried alternative is available and trying another path. While you
could potentially implement an algorithm like this iteratively, it turns out to be a lot less work
to do so recursively, as the process of recursion will naturally and automatically manage
details that you would otherwise have to manage yourself.
I’ll leave the details of this algorithm as an exercise for you to figure out. If you understand
the maze-generating algorithm above, it should not be a big step to design the maze-solving
As your algorithm seeks a solution, you’ll need to call member functions on the ​Maze​ and
MazeSolution​ objects that were provided as parameters, though note that the ​Maze​ has
been passed as a constant (because you shouldn’t have to change a maze in order to solve

Purchase answer to see full

User generated content is uploaded by users for the purposes of learning and should be used following Studypool’s honor code & terms of service.

Reviews, comments, and love from our customers and community:

Article Writing

Keep doing what you do, I am really impressed by the work done.



PowerPoint Presentation

I am speechless…WoW! Thank you so much!

Stacy V.

Part-time student

Dissertation & Thesis

This was a very well-written paper. Great work fast.

M.H.H. Tony


Annotated Bibliography

I love working with this company. You always go above and beyond and exceed my expectations every time.

Francisca N.


Book Report / Review

I received my order wayyyyyyy sooner than I expected. Couldn’t ask for more.

Mary J.


Essay (Any Type)

On time, perfect paper

Prof. Kate (Ph.D)


Case Study

Awesome! Great papers, and early!

Kaylin Green


Proofreading & Editing

Thank you Dr. Rebecca for editing my essays! She completed my task literally in 3 hours. For sure will work with her again, she is great and follows all instructions

Rebecca L.


Critical Thinking / Review

Extremely thorough summary, understanding and examples found for social science readings, with edits made as needed and on time. Transparent

Arnold W.




Joshua W.


Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>