Maze generation: Difference between revisions
Content added Content deleted
(add a typescript solution) |
|||
Line 2,526: | Line 2,526: | ||
# |
# |
||
background 000 |
background 000 |
||
proc show_maze . . |
|||
clear |
clear |
||
for i = 1 to len m[] |
for i = 1 to len m[] |
||
if m[i] = 0 |
if m[i] = 0 |
||
x = (i - 1) mod n |
x = (i - 1) mod n |
||
y = (i - 1) div n |
y = (i - 1) div n |
||
color 777 |
color 777 |
||
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.001 |
sleep 0.001 |
||
. |
. |
||
offs[] = [ 1 n -1 (-n) ] |
offs[] = [ 1 n -1 (-n) ] |
||
Line 2,543: | Line 2,543: | ||
brdr[] = [ -1 n - 2 -1 1 ] |
brdr[] = [ -1 n - 2 -1 1 ] |
||
# |
# |
||
proc m_maze pos . . |
|||
m[pos] = 0 |
m[pos] = 0 |
||
call show_maze |
call show_maze |
||
d[] = [ 1 2 3 4 ] |
d[] = [ 1 2 3 4 ] |
||
for i = 4 downto 1 |
for i = 4 downto 1 |
||
d = random i |
d = random i |
||
dir = d[d] |
dir = d[d] |
||
d[d] = d[i] |
d[d] = d[i] |
||
r = (pos - 1) div n |
r = (pos - 1) div n |
||
c = (pos - 1) mod n |
c = (pos - 1) mod n |
||
⚫ | |||
if c <> brdc[dir] and r <> brdr[dir] and m[posn] <> 0 |
|||
posn = pos + 2 * offs[dir] |
posn = pos + 2 * offs[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 . . |
|||
for i = 1 to len m[] |
for i = 1 to len m[] |
||
m[i] = 1 |
m[i] = 1 |
||
. |
. |
||
call m_maze startpos |
call m_maze startpos |
||
m[endpos] = 0 |
m[endpos] = 0 |
||
. |
. |
||
call make_maze |
call make_maze |