mazelib
mazelib copied to clipboard
A Python library for creating and solving mazes.
This is a research topic. I think it is doable... if you're willing for the algorithm to be painfully slow. Can it be done smartly? https://stackoverflow.com/questions/7369945/algorithm-for-maze-generation-with-no-dead-ends http://www.michaelchaney.com/2014/03/unicursal-mazes/ http://people.cs.aau.dk/~normark/prog3-03/html/notes/fu-intr-2_themes-hilbert-sec.html https://en.wikipedia.org/wiki/Space-filling_curve
Notice how this project has a really great front page on PyPI: https://pypi.org/project/openpyxl/ But mazelib's is really short and dull https://pypi.org/project/mazelib/ This is because the `openpyxl` project tries to copy/paste...
The generator unit tests are pretty good. But they need one more test feature for each generator type: test if the maze is solvable? One way to solve this would...
All of the maze solvers in `mazelib` are supposed to work with imperfect mazes. But I recently found that the `Collision` solver fails against DungeonRooms and imperfect mazes (with loops)....
When I originally developed this library I was able to prove (mathematically) that there was no difference between a maze with thick or thing walls when it came to generating...
Right now the .pxd files work, and the Cythonized version is certainly faster than the pure Python code. But I haven't done any optimization for performance. I bet there are...
Here is a small update I find to be useful for people who want to test their algorithms.
The variety of wheels built for this repo, and deployed on pypi.org, is low. We could use GitHub Actions "Artifacts" to build a wheel for: * [ ] various Windows...
This project (for the obvious historical reasons) uses `setup.py`. And I have not been bothered to change that because, "It works, so who cares." But it looks like future versions...
Setting `np.random.seed` is alright, but IMO it would be better to add a seed + RNG to each generator using [np.random.default_rng(seed)](https://numpy.org/doc/stable/reference/random/index.html) so that their RNG is self contained. This is...