Mazes extension

Now that production and beta have been bumped to newer versions, as promised in a previous thread, I am releasing my mazes extension. You can use this extension to generate random mazes with a variety of algorithms. The algorithms come from Jamis Buck’s book.[1]

Extension URL (for importing into your own projects): https://github.com/robo-technical-group/pxt-arcade-mazes.git

API documentation is available here: https://github.com/robo-technical-group/pxt-arcade-mazes/blob/master/docs/api.md

See it in action below. Press A to generate a new maze. In the JavaScript version, you also can press B to switch between the tile map and an image of the whole maze with its solution.

I made a simple game in Blocks that uses the playgrounds as a premise. At the start of the game, the duck is trapped in a cell. Press A to build a maze and to start the clock. You have 60 seconds to get the duck to its home in the swamp. Snacks appear when you have 30 seconds left to help you. If you’re running low on time and want to cheat, just press A to generate a new map. :slight_smile:

The sample game runs fine on hardware as-is. If you move to a larger tile map, you may need to switch the game to “hardware mode,” which disables the breadcrumb sprites. (The breadcrumbs still appear; you just don’t get any points for them.) Hardware can handle tile maps up to a grid size of 15x15 when the pathway is two tiles wide. If you switch to one-tile pathways, the path gets really tight to navigate, but you should be able to use a larger grid. JavaScript version is also available.[2]

Happy Monday! Have fun!


[1] Buck, J. (2015). Mazes for programmers: Code your own twisty little passages. Dallas, Texas: Pragmatic Programmers

[2] JavaScript version of Maze Game

See all of my MakeCode Arcade games and extensions here!

4 Likes

I highly recommend Jamis Buck’s book. Advanced students will be able to explore these algorithms to create their own projects. The book is light on the math and analysis of the algorithms (by intention), but the book also shares plenty of additional resources for students who want to dive more deeply into the algorithms. Definitely check it out!

Also, see the original thread (linked at the bottom of the main post above) to see some work that @jwunderl shared from his days as a lead TA at UW. Thanks again for sharing, Joey!

Sorry about the flurry of activity: Three games and four extensions over the weekend. I’ve had an inspired week. :smile:

Amazing! Really.

When I used this I noticed that your nice help files do not open when using the MakeCode Arcade editor: touching the block then selecting help. Have you been able to fix this?

In some of the extensions I have developed, I can’t get my help files to work. Tearing my hair…

See my extension example in Looking for MakeCode Arcade Extension with Help files that is not on Arcade's dashboard

Hi, @WeCodeMakeCode ! Thanks for the compliment; I really appreciate it! Love what you’re doing over at your site. For those of you who haven’t seen it yet, definitely check it out![1]

I haven’t yet tried to include help files for my extensions within the MakeCode interface. I’m not entirely certain that’s possible right now. The last time I looked at that documentation, those // %help = annotations could only point to a help file in the existing MakeCode documentation. That may have changed, though, since I last looked. @jwunderl, @peli, et al., do you have any thoughts or advice?

P.S. @peli - Thanks for raising the issue on GitHub. Like five months ago. :smiley: So sorry I missed it! I’ve updated the extension and bumped the version number to 2.0+.

P.P.S. For those of you following this extension, I plan on looking at the new tile map engine and seeing if it makes sense to rewrite the extension to take advantage of it. For now, this extension uses the older, color-based tile map engine.


[1] WeCodeMakeCode site

Wow you have quite a bit of docs! If you turn on github pages on your repo, github will automatically use Jekyll to render the simulator and the pages. We should be able to configure it as well to render all the docs under /docs.
I think you can edit _config.yml and add docs under the include key

include:
    index.html
    README.md
    static
    docs

(https://jekyllrb.com/docs/configuration/options/)

1 Like