Maze
Some of the information that was here is in the process of
being moved off to the Maze Help page.
It's the page you should get when you punch maze's "Help" button.
This page will contain everything that doesn't seem to fit
there.
Version 1.2.2, April 14, 2000
The Maze plug-in draws mazes in the GIMP
(0.99). Features include a choice of maze styles
(Prim's Algorithm or depth-first), tileable mazes, and
non-rectangular shaped mazes.
Tips
- Want walls to have a different size than the passages?
Make a maze, then Select/By Color.
Select/Grow or Shrink as desired, then Edit/Fill.
- The smooth
corners script can produce some nice results on
mazes.
What's New in 1.2.x:
- 1.2.2: Fixes a long standing bug in Prim's
algorithm. Also reworks the dialog for less complexity, and
updates to use libgimp 1.1 widgetry.
- 1.2.1: Bugfixes for shaped mazes on offset
layers. This was a very strange fix... x offset and y offset
apparently have different solutions. (get_row now has +xoff,
while get_col has no +yoff. Explain that, please!)
- Bugfix for non-interactive. Corrected the nparams check,
corrected the order of the parameters. The status return codes
mean very little right now, that run() function should be
re-done in the future.
- 1.2.0:Made mask_maze actually work, by
getting rows and columns at a time instead of tiles.
- Rewrote the help page with a man
page type organization and a gimp.org-like style-sheet.
- Split up the code into a few more different files.
algorithm.c contains the generation algorithms, handy.c contains
plug-in functions that are non maze-specific.
- Added Prim's Algorithm in normal and tileable modes.
- Added algorithm choice to the PDB parameters.
Note this changed the PDB interface.
- Added mask_maze, which allows mazes to be drawn in irregular
selections.
Notes:
If the width doesn't divide evenly into the selection, dead
space may be left around the edges. For non-tileable mazes, the
"pieces" selectors will only choose values where the width of this
extra dead space is no greater than that of a passage. (If you
really want to change that, change the value of
BORDER_TOLERANCE
in maze_face.c and recompile.)
There's the dialog. I'll admit, the interface doesn't seem to
be the most straightforward. ("What? You click on the left-arrow
and the slider directly above it goes to the right?")
I'm taking suggestions for new label names and/or ways to lay it
out...
Current bugs:
- On gray and indexed images, it doesn't use the current
fore/background colors... It defaults to black & white (or
colors 0 and 15). This is in function
get_colors()
. If any of you indexed-image fans
want to fix that function, I'd appreciate the help.
- If you switch to a larger passage size, leaving more dead
space along the bottom, things may show up there on the next
maze generation... It tends to go away in subsequent
renderings. I guess something's not getting flushed, but I
haven't tracked that down yet.
In the future?
- Re-write the run() function so the return status codes
actually mean something.
- Re-write the drawing routine to draw walls and rooms
differently. (This could also be made as a post-execution
script.)
- The interface code still needs cleaning up.
ChangeLog:
- 0.6.2:
drawbox
has been
rewritten with memcpy
and a row buffer. By the
way, Maze is now faster than checkerboard.
- Added a Help button which looks for extension_web_browser (part of the gimp distribution as of
0.99.19) and tells it to load this page.
- Added a
DIVBOX_LOOKS_LIKE_SPINBUTTON
option to
maze.h. A goal is to make those arrow buttons look and behave
more like gtk's spinbuttons. However, we're Not There Yet and
this option is set to FALSE
by default.
- 0.6.1: The "Time" button (for random seed,
see below) is now a toggle button that remembers its setting.
Moves the random seed stuff to the second notebook page.
- 0.6.0: Allows for seperate passage width
and height entries. Script authors beware: This changed
the PDB interface.
- Added the "pieces" selectors, allowing you to choose a width
(or height) based on how many divisions that will split the maze
in to. The arrows on those guys are semi-intellegent and will
only choose reasonable, workable values based on the selection
size and if it's a tileable maze or not.
- Added a "Time" button for selection of random seed. In
0.6.0, this is a push-button that simply feeds a value to the
"Seed" entry, but it will become a toggle-button in the very
near future.
- Took out
seed=time();
on "Run with last vals"
and added a "timeseed" member to stored values, to go with
aforementioned toggle button.
- Oh yeah. Code has been split in to maze.h, maze_face.c
(code for dialog, including everything relevant to the "pieces"
selectors (we call 'em
divbox
es)), and maze.c
(query, run, maze generation, and drawing routines). So maze
now ships in a tarball with a Makefile.
Maze 0.5.0 includes an option to make mazes "tileable"...
(Check out the page background.) You tell me if
you can still trace a solution through 'em. Unfortunately the
user must be very careful to use a passage width that is evenly
divisible into the drawable size, or else undesirable things
happen.
Maze 0.4.2 includes a patch from Adrian Likins to make
non-interactive mode work more properly with his circuit.scm
script. The non-interactive mode isn't something I test
rigorously, so feedback is especially appreciated.
Maze 0.4.1 properly handles colors in grayscale images, and
compiles nice and clean without warnings using gcc -Wall.
Maze 0.4.0 looks and feels just like 0.3.0, but a fair chunk of
the code was rewritten and it's a bit more efficient.
Credits:
- mazegen() is from maz.c in the Maze FAQ, found at The X2 MS-DOS Programming Archive.
(Note that's really a FTP link...)
- I've quoted liberally from other GIMP plug-ins, including plasma, pixelize, and
checkerboard... Thanks guys.
- Other than that, plug-in is by me, Kevin Turner <acapnotic@users.sourceforge.net>
- Also thanks to the folks on #gimp for putting up with me
and answering my questions.
- With a big "for they are jolly good fellows" to S&P
and all the other GIMP
developers...
- What they hey, to Linus & Linux developers as well.
Drinks for everybody.
[ Maze help |
GIMP plug-ins ]
Last modified: 2000/04/18 00:44:23
Kevin Turner
acapnotic@users.sourceforge.net