;Generate a map of width by height: (fn print_map [map] (for [i 1 (length map)] (var r "") (for [j 1 (length (. map i))] (set r (.. r " " (. map i j)))) (print r))) ; Function to generate the map. From here, all additional functions are used. (fn generate [height width] (var map []) ; Generate the outside shell. This is actually a double-lined outer layer. The ; outer-most layer allows for a single-square transitional tile, used as the ; entry/exit spot to the map. (for [i 1 (+ height 2)] (tset map i []) (for [j 1 (+ width 2)] (var tile 0) ; By default, draw an empty space (when (or (= i 1) (= i 2) (= i (+ height 1)) (= i (+ height 2))) (set tile 1)) ; The first and last rows (when (or (= j 1) (= j 2) (= j (+ width 1)) (= j (+ width 2))) (set tile 1)) ; The first and last rows (tset map i j tile))) ; Add in "set pieces": structures or map) (print_map (generate 20 20)) {: generate}