- Premiere AI implemented

This commit is contained in:
2022-10-23 18:22:28 +02:00
parent 8acc26329a
commit e0c41d8d34
4 changed files with 151 additions and 8 deletions

View File

@@ -2,4 +2,4 @@ title=Cacaus
width=128 width=128
height=96 height=96
zoom=4 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

View File

@@ -16,6 +16,8 @@ function _init()
--mapa_new() --mapa_new()
abad_init() abad_init()
table.insert(actors,abad) table.insert(actors,abad)
premiere.init()
table.insert(actors,premiere)
z = zombie.new() z = zombie.new()
table.insert(actors,z) table.insert(actors,z)
c=caco.new(10,24,16) c=caco.new(10,24,16)
@@ -127,7 +129,7 @@ function update_game()
else else
draw_hab(abad.hab,0,0) draw_hab(abad.hab,0,0)
text(abad.hab,1,1,2) text(abad.hab,1,1,2)
draw_hab(10,0,48) draw_hab(premiere.hab,0,48)
score.draw() score.draw()
setsource(tiles) setsource(tiles)

12
map.lua
View File

@@ -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, 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 -- 42
@@ -501,11 +501,11 @@ mapa={
}, },
-- 51 -- 51
{ {
42,43,44,45,44,45,45,255,255,255,44,45, 42,43,44,45,44,45,255,255,255,44,45,45,
40,72,255,255,255,255,255,255,255,41,255,255, 40,72,255,255,255,255,41,255,255,255,255,255,
40,88,255,255,255,255,255,255,3,255,255,255, 40,88,255,255,255,255,255,3,255,255,255,255,
40,255,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,3,255,255,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, 44,45,44,45,44,45,44,45,44,45,44,45,
}, },

141
premiere.lua Normal file
View File

@@ -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)<tiletype.half then
if premiere.flip then
premiere.x=premiere.x-2
else
premiere.x=premiere.x+2
end
if premiere.x<-4 then
premiere.hab=premiere.hab-1
premiere.x=84
end
elseif check_tile(premiere.hab,premiere.x+inc,premiere.y+6)<tiletype.half then
premiere.update=premiere.update_jumping
premiere.step=0
else
--if check_tile(premiere.hab,premiere.x+4,premiere.y+16)==tiletype.void and ((premiere.x+4)&7==0 or check_tile(premiere.hab,premiere.x+12,premiere.y+16)==tiletype.void) then
--premiere.update=premiere.update_falling
--else
premiere.flip=not premiere.flip
--end
end
if check_tile(premiere.hab,premiere.x+4,premiere.y+16)==tiletype.void and ((premiere.x+4)&7==0 or check_tile(premiere.hab,premiere.x+12,premiere.y+16)==tiletype.void) then
premiere.update=premiere.update_falling
end
-- if premiere.hab==abad.hab then
-- if aabb(abad,premiere) then
-- if abad.energia>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)<tiletype.half and check_tile(premiere.hab,premiere.x+inc,premiere.y+16)~=tiletype.void then
if premiere.flip then
premiere.x=premiere.x-2
else
premiere.x=premiere.x+2
end
if premiere.x<-4 then
premiere.hab=premiere.hab-1
premiere.x=84
end
end
if premiere.step<6 then
if premiere.y>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 and check_tile(premiere.hab,premiere.x+inc,premiere.y+16)~=tiletype.void then
if premiere.flip then
premiere.x=premiere.x-2
else
premiere.x=premiere.x+2
end
if premiere.x<-4 then
premiere.hab=premiere.hab-1
premiere.x=84
end
end
local xx=flr((premiere.x+4)/8)
local yy=flr((premiere.y+16)/8)
if premiere.y<32 then
if (premiere.y+16)&7==0 and (check_tile(premiere.hab,premiere.x+4,premiere.y+16)>=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