From cc2f1803a44e19b389954b8448c5ff48b556eb0b Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Thu, 6 Nov 2025 17:29:44 +0100 Subject: [PATCH] =?UTF-8?q?[WIP]=20M=C3=A9s=20tiles=20[WIP]=20Fase=202=20[?= =?UTF-8?q?NEW]=20En=20l'editor,=20es=20pot=20moure=20per=20la=20fase=20am?= =?UTF-8?q?b=20SPACE+ratol=C3=AD=20[WIP]=20m=C3=B2dul=20GAME=20[WIP]=20m?= =?UTF-8?q?=C3=B2dul=20BATMAN=20[NEW]=20F4=20recarrega=20les=20textures?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/batman.lua | 15 +++++++++ data/editor.lua | 23 ++++++++++++++ data/game.lua | 78 ++++++++++++++++++++++++++++++++++++++++++++++ data/level1.lev | 4 +-- data/level1_1.gif | Bin 493 -> 2017 bytes data/level1_2.gif | Bin 451 -> 637 bytes data/main.lua | 12 +++++-- data/tiles01.gif | Bin 884 -> 1427 bytes 8 files changed, 128 insertions(+), 4 deletions(-) create mode 100644 data/batman.lua create mode 100644 data/game.lua diff --git a/data/batman.lua b/data/batman.lua new file mode 100644 index 0000000..572acce --- /dev/null +++ b/data/batman.lua @@ -0,0 +1,15 @@ +batman = { + x = 7*8, + y = 14*8, + surface = nil, + flip = false, + + init = function() + batman.surface = surf.load("batman.gif") + end, + + draw = function() + surf.source(batman.surface) + draw.surf(0,0,16,16,batman.x,batman.y,16,16,batman.flip) + end +} \ No newline at end of file diff --git a/data/editor.lua b/data/editor.lua index b6cf42c..09694b9 100644 --- a/data/editor.lua +++ b/data/editor.lua @@ -1,3 +1,4 @@ + editor = { num = 1, map_surf = {nil,nil}, @@ -5,6 +6,8 @@ editor = { current_tile = 1, ox = 0, oy = 0, + mx = 0, + my = 0, init = function(level_name) game_update = editor.update @@ -63,13 +66,19 @@ editor = { view.origin(editor.ox,editor.oy) surf.cls(66) pal.trans(0) + surf.source(tiles) map.surf(editor.map_surf[1]) map.draw() + + --batman.draw() + + surf.source(tiles) map.surf(editor.map_surf[2]) map.draw() map.surf(editor.map_surf[editor.current_layer]) + local mx,my = mouse.pos() local tx = (mx//8)*8 local ty = (my//8)*8 @@ -106,6 +115,20 @@ editor = { end view.origin(0,0) + draw.text(tostring(mx//8)..","..tostring(my//8),50,0,22) + + mx,my = mouse.pos() + if key.down(key.SPACE) then + if editor.mx == -1 then + editor.mx,editor.my = mx,my + end + editor.ox = editor.ox + 8*(mx-editor.mx) + editor.oy = editor.oy + 8*(my-editor.my) + editor.mx,editor.my = mx,my + else + editor.mx = -1 + end + text(tostring(editor.current_layer),0,0,22,42) end, diff --git a/data/game.lua b/data/game.lua new file mode 100644 index 0000000..06ff861 --- /dev/null +++ b/data/game.lua @@ -0,0 +1,78 @@ +require "batman" + +game = { + num = 1, + map_surf = {nil,nil}, + current_layer = 1, + current_tile = 1, + + init = function(level_name) + game_update = game.update + game.load(1) + batman.init() + end, + + load = function(level) + local base_name = "level" .. tostring(level) + local file = io.open("data/" .. base_name .. ".lev", "r") + if file then + for line in file:lines() do + local key,value = line:match("^(.+)=(.+)$") + if key and value then + --if key == "start-x" then + -- editor.ox = tonumber(value) + --elseif key == "start-y" then + -- editor.oy = tonumber(value) + --end + end + end + game.num = level + if game.map_surf[1] then surf.free(game.map_surf[1]) end + if game.map_surf[2] then surf.free(game.map_surf[2]) end + game.map_surf[1] = surf.load(base_name .. "_1.gif") + game.map_surf[2] = surf.load(base_name .. "_2.gif") + else + print("No s'ha trobat l'arxiu!") + end + end, + + update = function() + --view.origin(editor.ox,editor.oy) + local cam_x, cam_y = -(batman.x-7*8),-(batman.y-6*8) + if (cam_x>0) then cam_x=0 end + if (cam_y>0) then cam_y=0 end + view.origin(cam_x,cam_y) + surf.cls(66) + pal.trans(0) + + surf.source(tiles) + map.surf(game.map_surf[1]) + map.draw() + + batman.draw() + + surf.source(tiles) + map.surf(game.map_surf[2]) + map.draw() + map.surf(game.map_surf[game.current_layer]) + + + if key.press(key.TAB) then + --game_update = editor.tile_picker_update + elseif key.down(key.RIGHT) then + batman.x = batman.x + 1 + elseif key.down(key.LEFT) then + batman.x = batman.x - 1 + elseif key.down(key.DOWN) then + batman.y = batman.y + 1 + elseif key.down(key.UP) then + batman.y = batman.y - 1 + end + + --view.origin(0,0) + --draw.text(tostring(mx//8)..","..tostring(my//8),50,0,22) + + --text(tostring(editor.current_layer),0,0,22,42) + end, + +} \ No newline at end of file diff --git a/data/level1.lev b/data/level1.lev index 99f6b1c..72dfba0 100644 --- a/data/level1.lev +++ b/data/level1.lev @@ -1,2 +1,2 @@ -start-x=-24 -start-y=-24 +start-x=-984 +start-y=8 diff --git a/data/level1_1.gif b/data/level1_1.gif index c29b3da5a7c5af4d14f44a2f113144d0122f2724..b6d496fc32306b858e685a3a45a847433eeb352a 100644 GIT binary patch delta 2013 zcmV<32O{|G1K|&l8h=3u97wRB!Gj1BDqP60p~Hs|2LhN#v7*I`7&B_z$g!ixj~zh_ z7)i3E$&(}pqFk9$AWM}jN5VuoGv>;gCUMdf2(qWopFo3#8~`ImfTKu}5;&@$fB~gP zRWdc8;AsE?OC3B&s&XmR04lX=z3MfpOQd4AN=-TzLWHD88-Fx4ur{sRun(}7C7@NJ z(7%8K3kDz(ND#P535Xc6bgx;FNA-He8enXI#a$C)c9~Ye0tQbvLq3`o>{+&3B}_QF z7%G9f545Vrt5<1Xo`ZAi-hB~7h~L1211C{Jc<_P7lMgR}+&J;(%AcP$zE=5f;?$=L zhYlPmaKF66i+}(BD^e!H0VYnobZN6>`phcdvtOCMB+{Ix1DG#AvOfON`jxa6Vg`+8 z;DI2Cv{XU^EY?_Mc|A5jWDG38S6*eYHUfMui8g>`aJ7b5WD>$Ppom=MN1|x}nphBm zFvi&101KYy;8hSRw&7`$X+>F59@Z$5hadtu!iX!Xgn#0RM{3C8go%|nVu3PN38R86 z8f0Av(v4=^k4Jsyl8|EhCY*Q5eT5uxNO30|b^|7Rh)3`cju+NDcAsN47#Nwfn$<|Bvfk|1SO}Ts@Y+a zSw70@h<}sL{|PDxnASR2o@hP5plY8Y6{M)6;#g`yr{6P^dM9KCCX)Mo zxK+QArgbc$iViB^d6LQ}FOuNF>o7+E60oVg4}UedBbNJ)Xs^GKN#&Kmsk$hVTLF-a zl&6joRP0qA2Fv2ZFmDtwX}U&avA%*Lwy|Zeo%L~SHH+J(OR5D>G*Y~ZW~!tu2itJW zP*3FLb`g<#CS3H^8+5fjLq5L_6LxBQH_fNh$^_86aimM( z&3|B|bngG%pL+k%4e&~jwaxa-NX;d&sDk2!SCL9BzVTFbJJm75Q!X^XroDpP;-XTO zCbHpCBTnLvlr_#-(EdUm+0SbcP+?;Znw_~qP<9S9rO%!vI-R6L9d^0adDZRCK#vHv zb#Pt_uE+_Y3*qERsT+FoqX!Q&pDEjSRDZw7yZ(Km4ncbG!jE$t7KxSRY4wxV{g$>U2sv(b;#1qQ z7?YT;txRJP>YB%BrohNB5NHpgUj*MZL1L}Qg6#T@o5aR2hoDPAWil0vXJi`S!Lg*pa~zW#>wMH2lC|Y6$Ri=^Bvs8^ z1@(ownpGWFiYIN6^G18b5PwwhGCiOL^`867OKXZY7Ow8Je>f$o8;$x^r7$z8(8DKF z542BpVGENDUEL(*8c#eK z;T2SZ&<{=CUa=o`11OW62s_PGii< z|5>G~$aA1NIcD0?zDTp19RRP$(i+fWWvde)Edh#lG}L+#gCPt+*31aot?VUsG?h$D zt@>5ZQkA*M{Vj0ulu3p%)UI)DD|!*CUQU`fp%Pu{cykkx`r7xt_|0#A=gZ&z`uD#8 z4zPd+OyB|=_`nEGuz!LV%-{w)_`wj4u!JW};R;*$!Who5hBwUN4tw~+AP%vJM@-@p zoA|^iPO*wt%;FZi_{A`ev5aR-;~Lxe#yHNgj(5!C9{c#mKn}8yhfL%m8~MmcPO_4h z%;Y9J`N>d@vXrMx{_mbc91E_?aQU=FjG$4urjn}7MtXil@5*UaWNyZOe= zaE`N_=S=51+xgCT&aQbBf)TmCis#neGR=fJuu#UB?XHDx`+xphH&b6+0 z&FfzK`q#h?wpOr*P3&SD``E}%wz8Ma>}EUr+0c%*w5Lt&YFqo-*v_`Lx6SQtd;8nq v4!5|+P404=``qYGx4PHO?smKT-SCdLyys2tdfWTn_|CV!_sws62Lu2+qT24W delta 477 zcmV<30V4k45A6ex8h-%@97wRB!Gj1BDqP60p~Hs|BTAe|v7*I`7&B_z$g!ixj}ilj z97!?&$df2js$9v^uCOyiusnd!} z1x9^JwW`&DQ>R|t%9UuzuU*56tx9sN*|TWVs$I*rt=qS7$Lh zy0z=quw%=fO}n=3+qiS<-p#wW@87_K3m;Crxbfr2lPh1&yt(t|(4$MAPQAMI>)5kv z-_E_e_wV4ti+|D|PrkhQ^XSv7U(de1`}gqU%b!obzWw|7^XuQwzrX+g00t=FfCLt3 z;DHDxsNjMOHt67k5Jo8BgcMe2;e{AxsNsejcIe@UAciR7h$NP1;)y7xsN#w&w&>!E zFvck3j5OA0+*pMVA` T=%9oaYUrVeCaS1-0RaFzY_ty8 diff --git a/data/level1_2.gif b/data/level1_2.gif index 27f3b8863a56bbf20d816ce72cf99741c7c1497d..40b3e58e5e7e41886d3801b8674046d263180071 100644 GIT binary patch delta 502 zcmVP&xr3lpKz@h?<8l}m!sne%Wqe`7hQN|3aShH%~>QKlKu3*E89V@hG z*`yJNl3mNTt=qS7$G(gkaW37vOzq-jsCTd5vlaV7RGX0SLVv>(1q1%exUu8MkhLm~ zOu2GOpO!NhMEcY0NX`NgC!9PHsc6lpQ>$Lhy0z=qu*a%B-4L`z+Oc!%-p#wW@87_K zmtG3MHc#RbO(Q?7T)6Y+(4$MAPMxlDv;=W8H%;=o_Tkv8i~k=_zP$PK=nFTmY&`V( z;>)uWZ=b%t{VMwwN#ox?P(Oc^*PZnpd;@Ohk$?XssNhrxUbfSMu{Bs1W)S8k;YSo! zlUe~}f2ro0Y_{p+*pMVA`=%9oaYUrVeCaUP7j5g}% zqmV`_>7ZqiaYU-(|rmE_ythVavtFXpmD(kGY)@tjm zxaO+suDtf@>#x8DE9|hu7HjOW$R?}ovdlK?KK)K+Wlwb*8>?Y7)@>+QGT shAZy4+ZYo#w+i<^ww+dz4+#<@4o!@J61pdJB^(noB#j- delta 315 zcmV-B0mT0O1j7T6GJnO37&B_z$g!ixk03*e97(dI$&)Bks$9vkrOTHvW6GRKv!>0P zICJXU$+M@=pFo2O9ZIyQ(W6L{DqYI7sne%Wqe`7hwW`&tShH%~%C)Q4uVBN99ZR;X z*|TWVs$I*rt=qS7$Lhy0z=quw%=fO}n=3+qiS<-p#wW@87_K z3m;Crxbfr2lPh1&yt(t|(4$MAPQAMI>)5kv-_E_e_wV4ti>Mz@zP$PK=+moT&%V9; z_weJ(pHIKO{VMzT^XuQwzrX+g00t=FfCLt3;DHDxsNjMOHt67k5Jo8BgcMe2;e{Ax NlUe~}1vy+m06Ta{x+4Gp diff --git a/data/main.lua b/data/main.lua index ff6b8ee..a5d3f27 100644 --- a/data/main.lua +++ b/data/main.lua @@ -1,6 +1,7 @@ require "editor" +require "game" -function mini.init() +function loadSurfaces() sprites=surf.load("batman.gif") tiles=surf.load("tiles01.gif") @@ -8,8 +9,11 @@ function mini.init() local paleta=pal.load("tiles01.gif") pal.set(paleta) +end - editor.init(1); +function mini.init() + loadSurfaces() + editor.init(1) end function mini.update() @@ -21,6 +25,10 @@ function mini.update() local fs = win.fullscreen() win.fullscreen(not fs) win.cursor(fs) + elseif key.press(key.F4) then + surf.free(sprites) + surf.free(tiles) + loadSurfaces() end if (game_update) then game_update() end diff --git a/data/tiles01.gif b/data/tiles01.gif index c98a02723d073500834239fbbc1150aee4d2cc11..2493eb500e15703066e770aff5aedd2a09cb0c06 100644 GIT binary patch delta 1028 zcmV+f1pE8+29pbr)&m6$7?I(uk?;tUjR78igoHwkj*UP6)Wc|TE&j=-oq=K6c8(hq|vE#>( zBSQu(3^As|mL+T6%(=6{oI`Jx%bZcP=hLWDGu9ULk?Dh@Gpn9WTeITNqHoiBUAwpM z)wdsIqNqFZtKZ0zU(VfkxTfOEWhWnu8YVC7M2-$sM4Zed8!0e+&}o zA~7~#>7|%vs_CW4ErJ&?kNzE$ zr>5#Fri;ZO?6AVZ3e0tm)M`is%rblHAeH_qEn_hpQf;HNF57Gbktn-uv${gttF*p4 zb}bO+LU!!8&B`i>t?Y6;YP964Y7nu+8kx~i+K>I*Ql`*Q0q zyzJ^4F2Mz7+G+5%3|sJjoCS;I`t7X~k6W?D$gSJ25E`TGuC2Llf@>inkIZSw#|qKI z4mkJlu)w(D8pOOY%iO@lUe($%Cc9EBbf=9l90UXq1Obb;+lDJHe?pV|+pIz`yznai z{_8BbKx3Wt%v-}E#M4kq9rnB2j%_usW}iKD$R%x delta 477 zcmV<30V4jB3-kt%){*3?k?;t8Dh6*D}6gQyafQJ=jXxylAqQ{S%EM6o~u~8$CC_y%h0f{BTlrY^rY}l}6%a}O( zVH7#QB%_=_$L$o!kz>%K(taUbD$ZIwrcnKrT6HU`RZpdaFe7!f>pXPcPT}%O)|a6O zXwgn0M7Av0v~bZQXf4#XtJ%1JY3E+6d-X2bL~8Z&?fX`)1xi9Jj2#Ts@1w(s1v7S6 zbR(@*lX~pf+(Yl)$>Mx2x;)U_V$jrL98wMM(cd5tAOuMy8TB~UiY~jB3ncJby0)c> z#%+tX5ZJM2dk#LWa>rR