2024-10-29 23:44:41 +00:00
|
|
|
; Cell Stuff
|
2024-10-30 01:42:51 +00:00
|
|
|
; The "cell-num" is the number of cells across; it is then squared to make the
|
|
|
|
; grid. Each cell has a "cell-size" of walls ("wall-width") and hallways
|
|
|
|
; ("hall-width").
|
|
|
|
(var cell-num 10)
|
|
|
|
(var (hall-width wall-width) (values 2 1))
|
2024-10-29 23:44:41 +00:00
|
|
|
(var cell-size (+ hall-width wall-width))
|
|
|
|
|
|
|
|
; Initialize the cell table
|
|
|
|
(var cells {})
|
|
|
|
(for [c 1 (* cell-num cell-num)]
|
2024-10-30 01:42:51 +00:00
|
|
|
(var cell [])
|
2024-10-29 23:44:41 +00:00
|
|
|
(for [i 1 cell-size]
|
|
|
|
(for [j 1 cell-size]
|
|
|
|
(var cell-index (+ j (* (- i 1) cell-size)))
|
|
|
|
(if (and (< i (+ hall-width 1)) (< j (+ hall-width 1)))
|
|
|
|
(tset cell cell-index 0)
|
|
|
|
(tset cell cell-index 1))))
|
|
|
|
(table.insert cells cell))
|
|
|
|
|
2024-10-30 01:42:51 +00:00
|
|
|
(fn cell-row [i] (+ 1 (// (- i 1) cell-num)))
|
|
|
|
(fn map-index [i]
|
|
|
|
(var cell-col (if (= 0 (% i cell-num)) cell-num (% i cell-num)))
|
|
|
|
(+ (* cell-size cell-size cell-num (- (cell-row i) 1))
|
|
|
|
(- (* cell-col cell-size) (- cell-size 1))))
|
|
|
|
|
2024-10-29 23:44:41 +00:00
|
|
|
(fn generate_cell_map [cells]
|
|
|
|
(var cell_map [])
|
|
|
|
(for [c 1 (length cells)]
|
|
|
|
(var (mi ci) (values (map-index c) 1))
|
|
|
|
(for [i 1 cell-size]
|
|
|
|
(for [j 1 cell-size]
|
|
|
|
(var new-map-index (+ mi (+ (- i 1) (* (- j 1) (* cell-num cell-size)))))
|
|
|
|
(var new-cell-index (+ ci (+ (- i 1) (* (- j 1) cell-size))))
|
|
|
|
(tset cell_map new-map-index (. cells c new-cell-index)))))
|
|
|
|
cell_map)
|
|
|
|
|
|
|
|
(fn print_cell_map [cells]
|
|
|
|
(var output "")
|
|
|
|
(for [i 1 (length cells)]
|
|
|
|
(set output (.. output " " (. cells i)))
|
|
|
|
(if (= 0 (% i (* cell-num cell-size))) (set output (.. output "\n"))))
|
|
|
|
(print output))
|
|
|
|
|
|
|
|
(print_cell_map (generate_cell_map cells))
|