From 92c153c4e1858a05b32578b30a08432ba317d83a Mon Sep 17 00:00:00 2001 From: dosworld Date: Fri, 21 Apr 2023 03:05:33 +0300 Subject: [PATCH] Initital commit --- ABMAZE.EXE | Bin 0 -> 4640 bytes ABMAZE.PAS | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++ LICENSE.TXT | 18 +++++++ README.MD | 35 +++++++++++++ 4 files changed, 193 insertions(+) create mode 100644 ABMAZE.EXE create mode 100644 ABMAZE.PAS create mode 100644 LICENSE.TXT create mode 100644 README.MD diff --git a/ABMAZE.EXE b/ABMAZE.EXE new file mode 100644 index 0000000000000000000000000000000000000000..706f0c06634ba03273943c49379c8ea5352aa0a1 GIT binary patch literal 4640 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 enough DO BEGIN + (* One step *) + d := Random(4); + Write(CHR(27), '[0;0H'); (* Cursor to position 0:0 *) + Write(CHR(27), '[3',CHR($35),'m'); + Writeln('ALDOUS-BRODER MAZE'); + Write(CHR(27), '[3',CHR($36),'m'); + WriteLn(unvisited, '/', enough, ':', total + , ', x: ', x + , ', y: ', y + , ', direction: ', d + , ' '); + Write(CHR(27), '[3',CHR($37),'m'); + WriteMaze(x, y); + CASE d OF + 0: BEGIN dx := 0; dy := -1; END; (* UP *) + 1: BEGIN dx := 1; dy := 0; END; (* RIGHT *) + 2: BEGIN dx := 0; dy := 1; END; (* DOWN *) + 3: BEGIN dx := -1; dy := 0; END; (* LEFT *) + END; + IF (x + dx * 2 >= 0) AND (x + dx * 2 <= WIDTH) AND + (y + dy * 2 >= 0) AND (y + dy * 2 <= HEIGHT) THEN BEGIN + isunvis := maze[y + dy * 2][x + dx * 2] = CELL_UNVISIT; + FOR d := 1 TO 2 DO BEGIN + INC(x, dx); + INC(y, dy); + IF isunvis THEN maze[y][x] := CELL_VISITED; + END; + IF isunvis THEN DEC(unvisited); + END; + END; +END; + +BEGIN + Randomize; + Write(CHR(27), '[2J'); (* Clear screen *) + ClearMaze; + GenerateMaze; +END. diff --git a/LICENSE.TXT b/LICENSE.TXT new file mode 100644 index 0000000..a23e378 --- /dev/null +++ b/LICENSE.TXT @@ -0,0 +1,18 @@ +MIT No Attribution + +Copyright 2023 Viacheslav Komenda + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.MD b/README.MD new file mode 100644 index 0000000..b11f7ae --- /dev/null +++ b/README.MD @@ -0,0 +1,35 @@ +# Aldous-Broder algorithm for maze generation. + +Here is algorithm implementation in Pascal language. + +I am implement my small idea: visit points with even (x,y) only. +In this case, odd cells will be wall of maze. + +## Description + +1. Choose a cell. Any cell. +2. Choose a connected neighbor of the cell and travel to it. + If the neighbor has not yet been visited, add the traveled edge + to the spanning tree. +3. Repeat step 2 until all cells have been visited. + +## Alorithm positive side + +1. Too hard implement maze-solver (maze has a good random-level) +2. No visible artifacts +3. Simple implementation + +## Alorithm negative side + +1. Speed +2. Impossible generate infinity mazes +3. Speed became too slow (more and more) at end process + +https://weblog.jamisbuck.org/2011/1/17/maze-generation-aldous-broder-algorithm + +https://www.youtube.com/watch?v=-EZwuFdkJes + +## License + +MIT-0 (See LICENSE.TXT) +