diff --git a/mapper.fnl b/mapper.fnl index ed43148..8f9e627 100644 --- a/mapper.fnl +++ b/mapper.fnl @@ -1,20 +1,15 @@ ; Cell Stuff -; This will result in a "2x2" cell, of [0 1 1 1], with 0 representing an empty -; space, and 1 representing a wall. -(var (hall-width wall-width) (values 1 2)) - -; This sets the "map width". This means 10 cells across and down. With each cell -; being 2x2, this results in a 20x20 square map. All maps will be square (for -; now). -(var cell-num 7) - -; Explicitly setting cell-size for convenience. All cells are squares +; 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)) (var cell-size (+ hall-width wall-width)) ; Initialize the cell table (var cells {}) -(var cell []) (for [c 1 (* cell-num cell-num)] + (var cell []) (for [i 1 cell-size] (for [j 1 cell-size] (var cell-index (+ j (* (- i 1) cell-size))) @@ -23,8 +18,12 @@ (tset cell cell-index 1)))) (table.insert cells cell)) -(fn map-row [i] (+ 1 (// (- i 1) cell-num))) -(fn map-index [i] (+ (- (* i cell-size) 1) (* cell-size cell-num (- (map-row i) 1)))) +(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)))) + (fn generate_cell_map [cells] (var cell_map []) (for [c 1 (length cells)] diff --git a/notes.md b/notes.md index 7476c9f..b168ed6 100644 --- a/notes.md +++ b/notes.md @@ -40,7 +40,7 @@ solution is along the sides or bottom. (var cell-stack [(math.random 1 num-cells)]) (while (> 0 (length cell-stack) - (var current-cell (table.remove cell-stack (length cell-stack))) + (var current-cell (table.remove cell-stack)) (tset cells current-cell :v true) ; Check if any of the current cell's neighbors are diff --git a/raycaster.fnl b/raycaster.fnl index 9ccfc86..fffe845 100644 --- a/raycaster.fnl +++ b/raycaster.fnl @@ -1,5 +1,5 @@ (local state (require :state)) -(local mapper (require :mapper)) +;(local mapper (require :mapper)) (local overlay (require :overlay)) (local pi math.pi) ; ### Screen Size ### @@ -15,6 +15,11 @@ [1 0 0 0 0 0 0 0 0 0 1 ] [1 0 0 0 0 0 0 0 3 0 1 ] [1 0 0 0 0 0 0 3 3 0 1 ] + [1 1 1 1 1 1 0 0 0 0 1 ] + [1 0 0 0 0 0 0 1 1 1 1 ] + [1 0 1 1 1 1 1 1 1 1 1 ] + [1 0 1 1 1 1 0 0 0 0 1 ] + [1 0 1 1 1 1 1 1 1 0 1 ] [1 0 0 0 0 0 0 0 0 0 1 ] [1 1 1 1 1 1 1 1 1 1 1 ]]) diff --git a/test.fnl b/test.fnl index f2c38f9..84e5046 100644 --- a/test.fnl +++ b/test.fnl @@ -12,8 +12,7 @@ (var cell-size (+ hall-width wall-width)) ; Initialize the cell table -(var cells []) -(print (length cells)) +(var cells {}) (for [c 1 (* cell-num cell-num)] (var cell []) (for [i 1 cell-size] @@ -22,11 +21,13 @@ (if (and (< i (+ hall-width 1)) (< j (+ hall-width 1))) (tset cell cell-index 0) (tset cell cell-index 1)))) - (print (length cell)) (table.insert cells cell)) -(fn map-row [i] (+ 1 (// (- i 1) cell-num))) -(fn map-index [i] (+ (- (* i cell-size) 1) (* cell-size cell-num (- (map-row i) 1)))) +(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)))) (fn generate_cell_map [cells] (var cell_map []) (for [c 1 (length cells)] @@ -38,12 +39,17 @@ (tset cell_map new-map-index (. cells c new-cell-index))))) cell_map) -(print (length cells)) +(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 (length (generate_cell_map cells))) +(print_cell_map (generate_cell_map cells)) -(var output "") -(var ctp (. cells 51)) -(for [i 1 (length ctp)] - (set output (.. output " " (. ctp i)))) -(print output) +; (var output "") +; (var ctp (. cells 51)) +; (for [i 1 (length ctp)] +; (set output (.. output " " (. ctp i)))) +; (print output)