Maze generation: Difference between revisions
Content added Content deleted
Line 2,517: | Line 2,517: | ||
<syntaxhighlight lang="text"> |
<syntaxhighlight lang="text"> |
||
size = |
size = 15 |
||
n = 2 * size + 1 |
n = 2 * size + 1 |
||
⚫ | |||
⚫ | |||
# |
|||
f = 100 / (n - 0.5) |
f = 100 / (n - 0.5) |
||
len m[] n * n |
len m[] n * n |
||
Line 2,532: | Line 2,529: | ||
x = (i - 1) mod n |
x = (i - 1) mod n |
||
y = (i - 1) div n |
y = (i - 1) div n |
||
color |
color 999 |
||
move x * f - f / 2 y * f - f / 2 |
move x * f - f / 2 y * f - f / 2 |
||
rect f * 1.5 f * 1.5 |
rect f * 1.5 f * 1.5 |
||
. |
. |
||
. |
. |
||
sleep 0. |
sleep 0.01 |
||
. |
. |
||
offs[] = [ 1 n -1 (-n) ] |
offs[] = [ 1 n -1 (-n) ] |
||
brdc[] = [ n - 2 -1 1 -1 ] |
|||
brdr[] = [ -1 n - 2 -1 1 ] |
|||
# |
# |
||
proc m_maze pos . . |
proc m_maze pos . . |
||
Line 2,549: | Line 2,544: | ||
for i = 4 downto 1 |
for i = 4 downto 1 |
||
d = random i |
d = random i |
||
dir = d[d] |
dir = offs[d[d]] |
||
d[d] = d[i] |
d[d] = d[i] |
||
if m[pos + dir] = 1 and m[pos + 2 * dir] <> 0 |
|||
m[pos + dir] = 0 |
|||
call m_maze pos + 2 * dir |
|||
if c <> brdc[dir] and r <> brdr[dir] and m[posn] <> 0 |
|||
posn = pos + 2 * offs[dir] |
|||
⚫ | |||
call m_maze posn |
|||
. |
. |
||
. |
. |
||
. |
. |
||
⚫ | |||
⚫ | |||
proc make_maze . . |
proc make_maze . . |
||
for i = 1 to len m[] |
for i = 1 to len m[] |
||
m[i] = 1 |
m[i] = 1 |
||
. |
|||
for i = 1 to n |
|||
m[i] = 2 |
|||
⚫ | |||
m[n * i - n + 1] = 2 |
|||
m[n * n - n + i] = 2 |
|||
. |
. |
||
call m_maze startpos |
call m_maze startpos |
||
m[endpos] = 0 |
m[endpos] = 0 |
||
endpos += n |
|||
. |
. |
||
call make_maze |
call make_maze |