Because I had a question or two about it, I used the Randomized Prim's Algorithm for maze generation. You can find the explanation for that on wikipedia
For the path finding, I made my own recursive limited depth search. 
It essentially returns the next step adjacent to the start that is in the direction of the goal. It works well for me because I don't have any loops thanks to the Prim's algorithm.

After making the maze I know which cells in the grid are always open cells and which are always closed, and which are walls, so I put coins and such in the open cells, and doors and fires where walls used to be. Skelly always goes from corner to corner, the goal is always the bottom right and the player starts in the top left.