From e0c41d8d34e569ac41a87ad8b91a223bdcc81b74 Mon Sep 17 00:00:00 2001 From: Raimon Zamora Date: Sun, 23 Oct 2022 18:22:28 +0200 Subject: [PATCH] - Premiere AI implemented --- game.ini | 2 +- main.lua | 4 +- map.lua | 12 ++--- premiere.lua | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 151 insertions(+), 8 deletions(-) create mode 100644 premiere.lua diff --git a/game.ini b/game.ini index bd490b9..6c401f9 100644 --- a/game.ini +++ b/game.ini @@ -2,4 +2,4 @@ title=Cacaus width=128 height=96 zoom=4 -files=score.lua,switches.lua,map.lua,mapa.lua,cacau.lua,caco.lua,zombie.lua,abad.lua,main.lua +files=score.lua,switches.lua,map.lua,mapa.lua,cacau.lua,premiere.lua,caco.lua,zombie.lua,abad.lua,main.lua diff --git a/main.lua b/main.lua index fb84939..2f7a047 100644 --- a/main.lua +++ b/main.lua @@ -16,6 +16,8 @@ function _init() --mapa_new() abad_init() table.insert(actors,abad) + premiere.init() + table.insert(actors,premiere) z = zombie.new() table.insert(actors,z) c=caco.new(10,24,16) @@ -127,7 +129,7 @@ function update_game() else draw_hab(abad.hab,0,0) text(abad.hab,1,1,2) - draw_hab(10,0,48) + draw_hab(premiere.hab,0,48) score.draw() setsource(tiles) diff --git a/map.lua b/map.lua index 6d65c39..7f20509 100644 --- a/map.lua +++ b/map.lua @@ -406,7 +406,7 @@ mapa={ 24,255,8,9,255,255,255,255,255,255,255,255, 24,255,8,9,255,255,255,255,255,255,255,255, 24,255,8,9,255,255,255,255,255,255,255,255, - 28,29,28,29,28,29,29,255,255,25,28,29, + 28,29,28,29,28,29,25,255,255,28,29,29, }, -- 42 @@ -501,11 +501,11 @@ mapa={ }, -- 51 { - 42,43,44,45,44,45,45,255,255,255,44,45, - 40,72,255,255,255,255,255,255,255,41,255,255, - 40,88,255,255,255,255,255,255,3,255,255,255, - 40,255,255,255,255,255,255,3,255,255,255,255, - 40,255,255,255,255,255,3,255,255,255,255,255, + 42,43,44,45,44,45,255,255,255,44,45,45, + 40,72,255,255,255,255,41,255,255,255,255,255, + 40,88,255,255,255,255,255,3,255,255,255,255, + 40,255,255,255,255,255,255,255,3,255,255,255, + 40,255,255,255,255,255,255,255,255,3,255,255, 44,45,44,45,44,45,44,45,44,45,44,45, }, diff --git a/premiere.lua b/premiere.lua new file mode 100644 index 0000000..e0b8af1 --- /dev/null +++ b/premiere.lua @@ -0,0 +1,141 @@ +premiere={hab=44,x=24,y=24,flip=true,frame=0,wait=0,step=0,anim={11,12,11,13},bb={x=4,y=0,w=8,h=16}} + +function premiere.init() + premiere.hit=premiere.hit + premiere.update=premiere.update_normal + premiere.draw=premiere.draw +end + +function premiere.draw() + sspr((premiere.frame&7)*16,(premiere.frame>>3)*16,16,16,premiere.x,premiere.y,16,16,premiere.flip) +end + +function premiere.hit() +end + +function premiere.update_normal() + premiere.wait=premiere.wait+1 + + if premiere.wait==6 then + premiere.wait=0 + premiere.step=(premiere.step+1)%4 + premiere.frame=premiere.anim[premiere.step+1] + + local inc=12 if premiere.flip then inc=2 end + if not premiere.flip and premiere.x==84 then + premiere.hab=premiere.hab+1 + premiere.x=-4 + elseif check_tile(premiere.hab,premiere.x+inc,premiere.y+14)0 then abad.energia=abad.energia-1 end +-- cls(3) +-- end +-- end + + end +end + +function premiere.update_jumping() + premiere.frame=12 + premiere.wait=premiere.wait+1 + + if premiere.wait==6 then + premiere.wait=0 + + local inc=12 if premiere.flip then inc=2 end + if not premiere.flip and premiere.x==84 then + premiere.hab=premiere.hab+1 + premiere.x=-4 + elseif check_tile(premiere.hab,premiere.x+inc,premiere.y+14)0 then + if check_tile(premiere.hab,premiere.x+4,premiere.y-2)~=tiletype.block then + if (premiere.x+4)&7==0 or check_tile(premiere.hab,premiere.x+12,premiere.y-2)~=tiletype.block then + premiere.y=premiere.y-2 + end + end + else + premiere.hab=premiere.hab-10 + premiere.y=32 + end + elseif premiere.step>6 then + premiere.update=premiere.update_falling + end + premiere.step=premiere.step+1 + end + +end + +function premiere.update_falling() + premiere.frame=12 + premiere.wait=premiere.wait+1 + + if premiere.wait==6 then + premiere.wait=0 + + local inc=12 if premiere.flip then inc=2 end + if not premiere.flip and premiere.x==84 then + premiere.hab=premiere.hab+1 + premiere.x=-4 + elseif check_tile(premiere.hab,premiere.x+inc,premiere.y+14)=tiletype.half or ((premiere.x+4)&7~=0 and check_tile(premiere.hab,premiere.x+12,premiere.y+16)>=tiletype.half)) then + premiere.update=premiere.update_normal + return + end + premiere.y=premiere.y+2 + else + premiere.hab=premiere.hab+10 + premiere.y=0 + end + end +end