Maze generation: Difference between revisions

m
Line 2,560:
.
offs[] = [ 1 n -1 (-n) ]
brdc[] = [ n - 2 -1 1 -1 ]
func getposn pos dir . posn .
brdr[] = posn[ =-1 n - 2 -1 1 ]
#
r = pos div n
c = pos mod n
if dir = 0 and c <> n - 2 or dir = 1 and r <> n - 2 or dir = 2 and c <> 1 or dir = 3 and r <> 1
posn = pos + 2 * offs[dir]
.
.
func m_maze pos . .
m[pos] = 0
Line 2,576 ⟶ 2,571:
dir = d[d]
d[d] = d[i]
callr getposn= pos dirdiv posnn
ifc posn= <>pos -1mod and m[posn] <> 0n
posn = pos + 2 * offs[dir]
if c <> brdc[dir] and r <> brdr[dir] and m[posn] <> 0
posn = pos + 2 * offs[dir]
m[(pos + posn) div 2] = 0
call m_maze posn
Line 2,590 ⟶ 2,588:
m[endpos] = 0
.
#
call make_maze
call show_maze</lang>
2,046

edits