Maze generation: Difference between revisions

Content added Content deleted
(→‎{{header|Icon}} and {{header|Unicon}}: + enhanced window parameters, title, simplified wall clearing)
Line 1,084: Line 1,084:
every d := !rd do
every d := !rd do
case d of { # try all, clearing wall on success
case d of { # try all, clearing wall on success
NORTH : maze[r,c] +:= ( GenerateMaze(r-1,c), NORTH)
NORTH : maze[r,c] +:= ( GenerateMaze(r-1,c), d)
EAST : maze[r,c] +:= ( GenerateMaze(r,c+1), EAST)
EAST : maze[r,c] +:= ( GenerateMaze(r,c+1), d)
SOUTH : maze[r,c] +:= ( GenerateMaze(r+1,c), SOUTH)
SOUTH : maze[r,c] +:= ( GenerateMaze(r+1,c), d)
WEST : maze[r,c] +:= ( GenerateMaze(r,c-1), WEST)
WEST : maze[r,c] +:= ( GenerateMaze(r,c-1), d)
}
}
return # signal success to caller
return # signal success to caller
Line 1,105: Line 1,105:
ww := (cw := (mw := *maze[1]) * CELL) + 2 * BORDER # win, cell, maze width
ww := (cw := (mw := *maze[1]) * CELL) + 2 * BORDER # win, cell, maze width


wparms := [ "Maze","g","bg=white","canvas=hidden",
wparms := [ sprintf("Maze %dx%d",*maze,*maze[1]), # window parameters
"g","bg=white","canvas=hidden",
sprintf("size=%d,%d",ww,wh),
sprintf("size=%d,%d",ww,wh),
sprintf("dx=%d",BORDER),
sprintf("dx=%d",BORDER),