From 40ea0786c217be163dd50b8d795228b21c7e7de1 Mon Sep 17 00:00:00 2001 From: JailGamer Date: Sun, 29 Mar 2026 00:23:18 +0100 Subject: [PATCH] [WIP] Score --- data/abad.lua | 10 +++-- data/game.lua | 6 +++ data/score.lua | 104 +++++++++++++++++++++++++++++++++++++++++++++++++ data/tiles.gif | Bin 11755 -> 11926 bytes 4 files changed, 117 insertions(+), 3 deletions(-) create mode 100644 data/score.lua diff --git a/data/abad.lua b/data/abad.lua index 7f31c64..5161d75 100644 --- a/data/abad.lua +++ b/data/abad.lua @@ -56,7 +56,8 @@ function abad_init() respawning=0, hab=10, vides=3, - energia=40, + energia=6, + max_energia=6, falling=0, step=0, mustep=1, @@ -135,7 +136,7 @@ function abad_hurt(howmuch) music.play(audio_game_over,0) else music.play(audio_life_lost,0) - abad.energia=40 + abad.energia=abad.max_energia -- abad.hab=abad.safe.hab -- abad.x=abad.safe.x -- abad.y=abad.safe.y @@ -310,7 +311,10 @@ function abad_state_normal() if abad.falling>0 then if abad.falling>(abad.max_jump_height<<1) then - abad_hurt(abad.falling-(abad.max_jump_height<<1)) + -- numero de pisos caiguts * 2 + local damage = math.floor(abad.falling/(mapa_room_rows*arcade_config.tiles_height))*2 + if damage>abad.energia then damage=abad.energia end + abad_hurt(damage) end abad.falling=0 end diff --git a/data/game.lua b/data/game.lua index 55f759e..b3ec6f8 100644 --- a/data/game.lua +++ b/data/game.lua @@ -14,6 +14,7 @@ require "gps" require "peu" require "premiere" require "elalien" +require "score" local tile_w = arcade_config.tiles_width local tile_h = arcade_config.tiles_height @@ -82,6 +83,8 @@ function game_init(menu) table.insert( actors, zombie.new(68, 3, 3,false) ) table.insert( actors, zombie.new(73, 3, 3,false) ) + score.create() + local abad_x, abad_y = coords.room_to_world ( 10, 4, 3 ) -- local abad_x, abad_y = arc_mapa_get_coords ( 77, 3, 2 ) abad:move(abad_x, abad_y) @@ -175,6 +178,7 @@ function update_game() arc_mapa_update() + for key,actor in pairs(actors) do actor:update() --if actor.hab==cacau.hab and actor~=abad then @@ -212,6 +216,8 @@ function update_game() end end cacau:draw() + + score.draw() fps_print() viewp:print() diff --git a/data/score.lua b/data/score.lua new file mode 100644 index 0000000..cd973d9 --- /dev/null +++ b/data/score.lua @@ -0,0 +1,104 @@ +score={} + +function score.avatar() + local x = 64 + local y = 0 + local w = 13 + local h = 15 + draw.rectf( x, y, w, h, 15 ); -- fons negre + draw.surf(211,128,w-2,h-2,x+1,y+1,w-2,h-2,true) +end + +function score.border() + draw.surf(32*o2aX,64*o2aX,8*o2aX,8*o2aX,0,0) draw.surf(48*o2aX,72*o2aX,8*o2aX,8*o2aX,8*o2aX,0) draw.surf(48*o2aX,72*o2aX,8*o2aX,8*o2aX,16*o2aX,0) draw.surf(40*o2aX,64*o2aX,8*o2aX,8*o2aX,24*o2aX,0) + draw.surf(48*o2aX,64*o2aX,8*o2aX,8*o2aX,0,8*o2aX) draw.surf(56*o2aX,64*o2aX,8*o2aX,8*o2aX,24*o2aX,8*o2aX) draw.surf(48*o2aX,64*o2aX,8*o2aX,8*o2aX,0,16*o2aX) draw.surf(56*o2aX,64*o2aX,8*o2aX,8*o2aX,24*o2aX,16*o2aX) + draw.surf(32*o2aX,64*o2aX,8*o2aX,8*o2aX,0,24*o2aX) draw.surf(48*o2aX,72*o2aX,8*o2aX,8*o2aX,8*o2aX,24*o2aX) draw.surf(48*o2aX,72*o2aX,8*o2aX,8*o2aX,16*o2aX,24*o2aX) draw.surf(40*o2aX,64*o2aX,8*o2aX,8*o2aX,24*o2aX,24*o2aX) + draw.surf(48*o2aX,64*o2aX,8*o2aX,8*o2aX,0,32*o2aX) draw.surf(56*o2aX,64*o2aX,8*o2aX,8*o2aX,24*o2aX,32*o2aX) + draw.surf(32*o2aX,64*o2aX,8*o2aX,8*o2aX,0,40*o2aX) draw.surf(48*o2aX,72*o2aX,8*o2aX,8*o2aX,8*o2aX,40*o2aX) draw.surf(48*o2aX,72*o2aX,8*o2aX,8*o2aX,16*o2aX,40*o2aX) draw.surf(40*o2aX,64*o2aX,8*o2aX,8*o2aX,24*o2aX,40*o2aX) + + draw.surf(48*o2aX,64*o2aX,8*o2aX,8*o2aX,0,48*o2aX) draw.surf(56*o2aX,64*o2aX,8*o2aX,8*o2aX,24*o2aX,48*o2aX) draw.surf(48*o2aX,64*o2aX,8*o2aX,8*o2aX,0,56*o2aX) draw.surf(56*o2aX,64*o2aX,8*o2aX,8*o2aX,24*o2aX,56*o2aX) + draw.surf(48*o2aX,64*o2aX,8*o2aX,8*o2aX,0,64*o2aX) draw.surf(56*o2aX,64*o2aX,8*o2aX,8*o2aX,24*o2aX,64*o2aX) --draw.surf(48*o2aX,64*o2aX,8*o2aX,8*o2aX,0,72*o2aX) draw.surf(56*o2aX,64*o2aX,8*o2aX,8*o2aX,24*o2aX,72*o2aX) + draw.surf(32*o2aX,64*o2aX,8*o2aX,8*o2aX,0,72*o2aX) draw.surf(48*o2aX,72*o2aX,8*o2aX,8*o2aX,8*o2aX,72*o2aX) draw.surf(48*o2aX,72*o2aX,8*o2aX,8*o2aX,16*o2aX,72*o2aX) draw.surf(40*o2aX,64*o2aX,8*o2aX,8*o2aX,24*o2aX,72*o2aX) + draw.surf(48*o2aX,64*o2aX,8*o2aX,8*o2aX,0,80*o2aX) draw.surf(56*o2aX,64*o2aX,8*o2aX,8*o2aX,24*o2aX,80*o2aX) draw.surf(48*o2aX,64*o2aX,8*o2aX,8*o2aX,0,88*o2aX) draw.surf(56*o2aX,64*o2aX,8*o2aX,8*o2aX,24*o2aX,88*o2aX) +end + +function score.jailgames() + arc_text("jail",6*o2aX,77*o2aX,2) + arc_text("games",8*o2aX, 82*o2aX,2) + arc_text("2026",9*o2aX,89*o2aX,1) +end + +function score.life_meter() + local x = 0 + local y = 2 + local w = 6 + local h = 7 + -- borde blau + draw.hline(1+x, y, 8*w+4-2, 15) + draw.hline(1+x, y+h+3, 8*w+4-2, 15) + draw.vline(0+x, y+1, y+h+2, 15) + draw.vline(8*w+4-1, y+1, y+h+2, 15) + + draw.rectf( 1+x, 1+y, 8*w+2, h+2, 16 ); -- fons negre + + if abad.energia>abad.max_energia/2 then + -- 50% + color = 10; -- verd + elseif abad.energia>abad.max_energia/3 then + -- 33% + color = 8; -- groc + else + color = 3; -- roig + end + + local full_width = 48 + local curr_width = math.floor(full_width*(abad.energia/abad.max_energia)) + local life_segment = math.floor(full_width/6) + draw.rectf( 2+0+x+0*w, 2+y, full_width, h, 16 ); + draw.rectf( 2+0+x+0*w, 2+y, curr_width, h, color ); + draw.vline( 2+0+x+0*w+life_segment*1, y+2, y+h+1, 16) + draw.vline( 2+0+x+0*w+life_segment*2, y+2, y+h+1, 16) + draw.vline( 2+0+x+0*w+life_segment*3, y+2, y+h+1, 16) + draw.vline( 2+0+x+0*w+life_segment*4, y+2, y+h+1, 16) + draw.vline( 2+0+x+0*w+life_segment*5, y+2, y+h+1, 16) +end + +function score.create() + score.surf=surf.new(arcade_config.resolucion.width,arcade_config.resolucion.height) + surf.target(score.surf) + surf.cls(0) + + score.avatar() + + -- score.border() + -- score.jailgames() + + score.life_meter() + surf.target(0) +end + +function score.draw() + local x = 225 + local y = 12 + surf.target(score.surf) + surf.cls(0) + score.avatar() + score.life_meter() + surf.target(0) + + surf.source(score.surf) + draw.surf(0,0,arcade_config.resolucion.width,arcade_config.resolucion.height,170,10) + surf.source(tiles) + if abad.objects.gorro~=nil then draw.surf(96*o2aX,32*o2aX,16*o2aX,16*o2aX,99*o2aX,44*o2aX) end + if abad.objects.peu~=nil then draw.surf(112*o2aX,32*o2aX,16*o2aX,16*o2aX,109*o2aX,44*o2aX) end + if abad.objects.gps~=nil then draw.surf(112*o2aX,48*o2aX,16*o2aX,16*o2aX,100*o2aX,55*o2aX) end + + if abad.objects.clau_premiere~=nil then draw.surf(112*o2aX,8*o2aX,8*o2aX,8*o2aX,104*o2aX,48*o2aX) end + if abad.objects.clau_elalien~=nil then draw.surf(120*o2aX,8*o2aX,8*o2aX,8*o2aX,112*o2aX,48*o2aX) end + + if abad.objects.bol~=nil then draw.surf(112*o2aX,88*o2aX,16*o2aX,8*o2aX,104*o2aX,46*o2aX) end + + arc_text(abad.vides,x,y,2) + + -- draw.rectf((102+(abad.energia>>1))*o2aX,30*o2aX,(21-(abad.energia>>1))*o2aX,8*o2aX,2) +end \ No newline at end of file diff --git a/data/tiles.gif b/data/tiles.gif index 356c0b62bab9e4439f7ce89556ae45b83ce1a0e0..b23890d7f1ebd63802622c8fccd5334a2321a214 100644 GIT binary patch delta 5874 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