From 50ef6d575fa7a516ee2a0a513515104112f10a9b Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Mon, 6 Apr 2026 09:02:38 +0200 Subject: [PATCH] load map image into map data --- two_player_cleaning_game/.DS_Store | Bin 6148 -> 8196 bytes two_player_cleaning_game/main.fnl | 5 ++++ two_player_cleaning_game/map-util.fnl | 36 ++++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 two_player_cleaning_game/map-util.fnl diff --git a/two_player_cleaning_game/.DS_Store b/two_player_cleaning_game/.DS_Store index ee089d426c1d0cd8b4c647ca55c310010e06d523..34882151b23c015de0f05f2d18521a7fe1d9e5c4 100644 GIT binary patch literal 8196 zcmeHMYitx%6u#%Sv@_J9!%JIWhlLHuqsSHt;Z@vj3xr20>26=kqs;CM?S$Exb!T>4 zZ5oR~P1M8(hWNuo@bwEHF);>}2nmTOK8PVkH1UW2AZj$4;9vFJxwC|BZTMpd#JSDf zGv{?r&zbYh?VS=rAYRZK38^E52zW6n*WmOogX!5dVNhSflz{$(xWq{hIk~iHrzcnk zf}jFH1%e6$6$mO2RN!`~0Pfjr2$SslTpP?m1%e9vFDt;_4`I9*jrnwpQ}5M*lXnC_ zT8UzB;60uLJfE;nV?G_@)N{o(`RM_CSMZM*z}-c>{+-US`pcR!C(NL?l$zHetA}_ZMmvp>3Pq=&~!A}*JD_kJruVKmgacA39b-C zLF||7M@E{WO%36ub!$f(!Xu5*rnShdUOPG}3bP|CH+J?PHnW!fB+mo`A3V2bSdfYN=b`TYwnV!DN~%{{hb zxQ1=@^}717TUvXZsyF4>dAHSDKcx;QuiMRFfje@{-Raiz4$??0%JUT8tgQ<#T6*8= zb?bJlE0N@2|{*EnS8`K}>Da|ioWC!<@MVGZ;Y4aZ2EdeTy}`gCXz z#mjR2oVoKtiZYpLZy{|wP%zvF<%l47F%~RTqjQAtW3#%7Tn_A8)k(;7+XGS#$h%9_aItluChJw=|iywewM zo-HZ8_^`8>qT|crt%`Dhh25n(ZbweH@K?Iv$KHmzlryO2^^PHIR$sakrQQ=pIdj^g z8LsUqu^JtiMIT$PMbo?-=GM=Vm88-w$X^Ngqz$WRAVBb0aGVHYgg+5NBC%!sHgeWF z;oW(ao>kKOlx>Ie$r7@G#7Q?X$Ot(~j+2w*6gfveB^SxJ67+?n?K^hv+R=U|q3=p9$J^ca)Gb)N zJi2E6=J@r#V`5}bgO@CuxQH?aNRhIg>}KZG;z5nO;z;39nH!Qc{H zfgcbAzn3-k?y|;a4L`22vvymX|1Dg&bpD02*13;cCfaB>waE?MxP2XDVaLTOCi0eP zTLUOBfsWbSY*cWAI(GiwGWqxan=KRQg9-!{xPvPIm2HW(I3_UJ%Y&V@!+0IUiw$Ns x#;NCmlXo0P>K(_CUjK(7-iOhY`NVuW#wkj0-0}|rx9qR)VE+&H|J!%}{|9It)Rq7M delta 116 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{MGjUEV6q~50$jG)aU^gQp+h!gCR>sL0;`28) ygtIJW=im@z2C4!A0d64S3evE#@H_Klei=uQi42Sk3@jj;31TEzY;!!%9A*Gb{t-3+ diff --git a/two_player_cleaning_game/main.fnl b/two_player_cleaning_game/main.fnl index 1b7e742..e7ce215 100644 --- a/two_player_cleaning_game/main.fnl +++ b/two_player_cleaning_game/main.fnl @@ -1,11 +1,16 @@ +(local map-util (require "map-util.fnl")) + (var player-sprite nil) ; 20x20 pixels (local game-state { :player-pos [0 0] }) + (fn love.load [] + (map-util:load) (love.window.setMode 600 640) + (set player-sprite (love.graphics.newImage "assets/player_001.png")) ;; start a thread listening on stdin (: (love.thread.newThread "require('love.event') diff --git a/two_player_cleaning_game/map-util.fnl b/two_player_cleaning_game/map-util.fnl new file mode 100644 index 0000000..2c5aaf0 --- /dev/null +++ b/two_player_cleaning_game/map-util.fnl @@ -0,0 +1,36 @@ +(local name "travis") + +(local levels [ + {:image-path "assets/level_002.png" :walls []} +]) + +; "20 x 20 array with the outter edge set to 1 (walls) and the inner edge set to 0 (floor)" +(local empty-level + (let [level []] + (for [y 0 19 1] (table.insert level [])) ; empty rows + (each [y row (ipairs level)] + (for [x 0 19 1] (table.insert row 0))) + level + ) +) + +(lambda load-walls [level] + (let [image-data (love.image.newImageData (. level :image-path))] + (each [y row (ipairs (. level :walls))] + (each [x wall (ipairs row)] + (let [(r g b) (image-data:getPixel (- x 1) (- y 1))] + ; (print (.. x "," y " -> " r "," g "," b)) + (tset row x (if (= (.. r g b) "111") 0 1))))))) + +(fn load [] + "load levels" + (each [_ level (pairs levels)] + (tset level :walls empty-level) + (load-walls level)) + ; (print (fennel.view levels)) + ) + +{ + :load load + :levels levels +}