Maze generation: Difference between revisions

Content added Content deleted
Line 2,560: Line 2,560:
.
.
offs[] = [ 1 n -1 (-n) ]
offs[] = [ 1 n -1 (-n) ]
brdc[] = [ n - 2 -1 1 -1 ]
func getposn pos dir . posn .
posn = -1
brdr[] = [ -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 . .
func m_maze pos . .
m[pos] = 0
m[pos] = 0
Line 2,576: Line 2,571:
dir = d[d]
dir = d[d]
d[d] = d[i]
d[d] = d[i]
call getposn pos dir posn
r = pos div n
if posn <> -1 and m[posn] <> 0
c = pos mod n
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
m[(pos + posn) div 2] = 0
call m_maze posn
call m_maze posn
Line 2,590: Line 2,588:
m[endpos] = 0
m[endpos] = 0
.
.
#
call make_maze
call make_maze
call show_maze</lang>
call show_maze</lang>