Maze generation: Difference between revisions

m
Line 1,992:
[https://easylang.online/apps/_r_maze0.html Run it]
 
<lang>intvars# maze generation
#
'size = 25
intvars
'n = 2 * 'size + 1
'freesize = 120
'endposn = 'n2 * 'n - 'nsize -+ 31
'startposendpos = 2n * 'n +- n - 23
'f#startpos = 1002 /* 'n + 2
'f2f# = 'f#100 / 2n
#
func draw_square pos col . .
x = pos mod 'n
y = pos / 'n
color col
move x * 'f# y * 'f#
rect 'f# * 1.05 'f# * 1.05
.
func mark pos . .
x = pos mod 'n
y = pos / 'n
color 900
move x * 'f# + 'f2# y * 'f# + 'f2#
circle 'f2# / 2
.
len m[] 'n * 'n
#
func show_maze . .
Line 2,021 ⟶ 2,014:
rect 100 100
for i range len m[]
if m[i] = 'free0
call draw_square i 777
.
.
call draw_square 'startpos 900
.
offs[] = [ 1 'n -1 (-'n) ]
func visited pos . r .
r = 0
Line 2,035 ⟶ 2,028:
.
func m_maze pos . .
m[pos] = 'free0
repeat
call visited pos res
until res = 40
dir = random 4
posn = pos + 2 * offs[dir]
if m[posn] <> 'free0
m[pos + offs[dir]] = 'free0
call m_maze posn
.
Line 2,048 ⟶ 2,041:
.
func make_maze . .
for i range 'nlen m[]
m[i] = 'free1
.
m['n * i] = 'free
m['n *for i +range 'n - 1] = 'free
m['n * ('n - 1) + i] = 'free0
m['n * i] = 'free0
m[n * i + n - 1] = 0
m[n * (n - 1) + i] = 0
.
call m_maze 'startpos
m['endpos] = 'free0
.
#
2,083

edits