-- title: untitled shmup
-- author: game developer
-- desc: something like Gradius/Nemesis/Salamander/Life Force
-- script: lua
t=0
local bullet_speed = 6
local bullet_timer = 0
local bullet_timer_start = 10
local player_bullets = {}
local player = {
x=0,y=0,
vx=0,vy=0,
speed=1.5,
sp=256,
fire_t=0,
fire_held=false,
}
-- TODO: various types
function add_bullet()
sfx(0, 'D-6', 10, 0, 11, 4)
table.insert(player_bullets, {
x=player.x + 10,
y=player.y + 5,
vx = 0,
vy = 0,
})
end
function draw_player()
spr(player.sp, player.x, player.y, 0, 1, 0, 0, 2, 2)
end
function draw_bullets()
for key,val in ipairs(player_bullets) do
spr(258, val.x, val.y, 0)
end
end
function handle_input()
player.vx = 0
player.vy = 0
if btn(0) then
player.vy=-player.speed
end
if btn(1) then
player.vy=player.speed
end
if btn(2) then
player.vx=-player.speed
end
if btn(3) then
player.vx=player.speed
end
-- slow down diagonal movements
if player.vx * player.vy ~= 0 then
player.vx = player.vx * 0.707
player.vy = player.vy * 0.707
end
player.x = player.x + player.vx
player.y = player.y + player.vy
player.fire_held = false
if btn(4) then
if player.fire_t <= 0 then
player.fire_t = bullet_timer_start
add_bullet()
else
player.fire_t = player.fire_t - 1
end
player.fire_held = true
else
player.fire_t = 0
end
end
function TIC()
handle_input()
for key,val in ipairs(player_bullets) do
val.x = val.x + bullet_speed
if val.x > 240 then
table.remove(player_bullets, key)
end
end
cls(0)
draw_player()
draw_bullets()
dbg(tostring(player.fire_t), 0)
dbg(tostring(player.fire_held), 1)
dbg(tostring(player.vx), 2)
dbg(tostring(player.vy), 3)
t=t+1
end
function dbg(msg, line_no)
print(msg, 5, line_no * 7, 5, true, 1, true)
end
--
-- 000:00000000000000000000000000000000ede00000ecdef0000edddef00fcccc8b
-- 001:000000000000000000000000000000000000000000000000000000009cde0000
-- 002:0000000000000000000000004040440030303300000000000000000000000000
-- 016:cf9edd99dfb8eeee00db8ddd00008cce00000000000000000000000000000000
-- 017:aaeddcefeeeccde0ccde00000000000000000000000000000000000000000000
--
--
-- 000:123345667889abbcdeff1fedcba86642
--
--
-- 000:00d050808060c040d020e020f010f010f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000502000000000
--
--
-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57
--