Creating a Maze and Bot

Due Tuesday, November 12

Create a map with a maze, which can be solved by bots. Also create bots, which can be spawned by the player, and will complete the maze. There should be some kind of goal in the maze, or exit, or something to indicate success.
The player here should have some kind of fly mode, or glass floor above the maze. Spawning a bot should put the bot into the maze. The example engine as of 10/29 has an example of how to spawn blocks, so it should be a simple extension to spawn bots.
Bots should be animated in the sense that they move from one place to another smoothly (not by teleporting), and turn smoothly instead of instantly. It should be possible to see what direction a bot is facing. This project doesn't require a walk animation, but feel free to add one if you like. Keep the bots locked to axis-aligned directions, and do the same with maze walls (if you really want curved, angled, etc. walls, it's not a problem, but it'll be a lot easier this way).
Keeping bots in axis-aligned directions, and the same with walls, really leaves just 4 options for movement: +Z, -Z, +X, and -X. Consider the maze as an arrangement of tiles or blocks, like Minecraft or Chess. This allows a fairly simple AI using depth-first search.
Keep a set of explored nodes (stl::set)
Keep a stack showing the current path back to the origin (stl::vector)
A "node" is an X and Y position
Until the goal is reached:
	If an unexplored node is adjacent to the current position:
		move to it
		add it to the set
		add it to the path stack
	else 
		pop the stack and backtrack to the popped location

There are a number of maze generation algorithms, but I've been imagining this lab with a hard-coded maze. Feel free to generate mazes instead. If you make the walls out of loaded_object blocks, the function is_empty can be used to check and see movement options from a given position. If the walls are thin, you'll need something else, based on the current and potential position.