logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

maze - an automated X11 demo repeatedly creating and solving a random maze

Author(S)

       Zack Weinberg [ Smarter maze-solver ] zack@rabi.phys.columbia.edu
       Johannes Keukelaar [ Generators 1 and 2 ] johannes@nada.kth.se
         Royal Institute of Technology, Stockholm, Sweden
       Jim Randell    [ XScreenSaver version ] jmr@mddjmr.fc.hp.com
         HPLabs, Bristol
       Richard Hess   [ X11 extensions ]       {...}!uunet!cimshop!rhess
         Consilium, Mountain View, CA
       Dave Lemke     [ X11 version ]          lemke@sun.COM
         Sun MicroSystems, Mountain View, CA
       Martin Weiss   [ SunView version ]
         Sun MicroSystems, Mountain View, CA

X Version 11                                   6.08 (10-Oct-2023)                                       maze(6x)

Bugs

       Expose events force a restart of maze.

       Mouse actions are based on "raw" values (Button1, Button2 and Button3) instead of using the pointer map.

Description

       The maze program creates a "random" maze and then solves it with graphical feedback.

Environment

DISPLAY to get the default host and display number.

       XENVIRONMENT
               to get the  name  of  a  resource  file  that  overrides  the  global  resources  stored  in  the
               RESOURCE_MANAGER property.

       XSCREENSAVER_WINDOW
               The window ID to use with --root.

Name

       maze - an automated X11 demo repeatedly creating and solving a random maze

Options

maze accepts the following options:

       --window
               Draw on a newly-created window.  This is the default.

       --root  Draw on the root window.

       --window-idnumber
               Draw on the specified window.

       --install
               Install a private colormap for the window.

       --visualvisual
               Specify which visual to use.  Legal values are the name of a  visual  class,  or  the  id  number
               (decimal or hex) of a specific visual.

       --grid-sizepixels
               The  size  of  each  block of the maze, in pixels; default is 0, meaning pick a random grid size.
               Minimum meaningful value is 2.

       --live-colorcolor
               The color of the path.

       --dead-colorcolor
               The color of the failed path (it is also stippled with a 50% pattern.)

       --skip-colorcolor
               The maze solver will choose to not go down a path if it can "see" (in a straight line) that it is
               a dead end.  This is the color to use for paths that are skipped for this reason.

       --surround-colorcolor
               If the maze solver ever completely encloses an area within the maze, then it knows that the  exit
               is  not  in  there  (and in fact the interior of that area might not even be reachable.)  It will
               mark out those cells using this color.

       --solve-delayinteger
               Delay (in microseconds) between each step of the solution path.  Default 5000, or  about  1/200th
               second.

       --pre-delayinteger
               Delay  (in  microseconds) between generating a maze and starting to solve it.  Default 2000000 (2
               seconds.)

       --post-delayinteger
               Delay (in microseconds) after solving a maze and before generating a new one.  Default 4000000 (4
               seconds.)

       --generatornum
               Sets the algorithm that will be used to generate the mazes. The default  is  -1,  which  randomly
               selects  an algorithm for each maze that is generated. Generator 0 is the original one, and works
               by walking around randomly until we hit a place we've been before, then backtracking and trying a
               new direction somewhere. Generator 1 picks a random spot in the maze, then draws a straight  wall
               from  that spot in a random direction until it hits another wall (and continues until the maze is
               complete). Generator 2 is based on sets. Initially all cells are  in  different  sets.  Then  two
               neighboring  cells  are  chosen and if they are in different sets, their sets are joined. If they
               were in the same set, a wall is built between them. This continues until the maze is complete.

               All generators generate mazes with a certain 'characteristic'. See if you can spot them!

               The three algorithms are essentially Kruskal, Prim, and a depth-first recursive backtracker.

       --max-lengthnum
               Controls the maximum length of walls drawn in one go by generator 1.

       Clicking the mouse in the maze window controls it.

       LeftButton      Clears the window and restarts maze.

       MiddleButton    Pause or unpause the program.

       RightButton     Exit.

       --fps   Display the current frame rate and CPU load.

See Also

X(1), xscreensaver(1)

Synopsis

maze  [--display  host:display.screen]  [--foreground  color]  [--background  color]  [--window] [--root]
       [--window-id number][--install] [--visual visual] [--grid-size pixels] [--live-color color] [--dead-color
       color] [--solve-delay usecs] [--pre-delay usecs] [--post-delay usecs] [--generator integer] [--max-length
       integer] [--fps]

See Also