-- title: 1bit shmup
-- author: pixelbath
-- desc: idk
-- script: lua
t=0
local bullet_speed = 6
local bullet_timer = 0
local bullet_timer_start = 10
-- props: x, y, vx, vy, type
local player_bullets = {}
local player = {
x=20,y=60,
vx=0,vy=0,
speed=1.5,
sp=257,
fire_t=0,
fire_held=false,
gun_type=1,
gun_level=1,
}
local enemies = {}
function add_enemy(en_type, xpos, ypos)
table.insert(enemies, {
x=xpos, y=ypos,
type=en_type,
t=0,
})
end
function mod(a, b)
return math.floor(a-(math.floor(a/b)*b))
end
-- TODO: various types
function add_bullet()
sfx(0, 'D-6', 10, 0, 11, 4)
table.insert(player_bullets, {
x=player.x + 8,
y=player.y + 3,
vx = 0,
vy = 0,
})
end
function draw_player()
local engine_spr = 274
if player.vx > 0 then
engine_spr = 306
elseif player.vx < 0 then
engine_spr = 290
end
-- draw engine fire then player
-- spr(engine_spr, player.x-8, player.y+1)
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(291, val.x, val.y, 0, 1, 0, 0, 2, 1)
end
end
-- also handle powerups since they're colliders
function draw_enemies()
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
if player.x < 5 then player.x = 5 end
if player.x > 220 then player.x = 220 end
if player.y < 5 then player.y = 5 end
if player.y > 128 then player.y = 128 end
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
-- debug
if btnp(5) then
player.gun_type = mod(player.gun_type + 1, 3) + 1
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("type:"..tostring(player.gun_type), 0)
dbg(tostring(player.fire_held), 1)
dbg(tostring(mod(t/3, 5) + 1), 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
--
-- 001:000000000000000000000ccc00cccccccccc00c000c00c000ccccccc0c0c0c0c
-- 002:0000000000000000cc00000000000000000000000ccc0000ccccc000c000ccc0
-- 003:0000000000000000000000cc000cccccccccc0c000c00c000ccccccc0ccccccc
-- 004:0000000000000000cc00000000000000000000000ccc0000ccccc000cc00ccc0
-- 005:00000000000000000000000000000ccc00cccccc0cc00c00cccccccc0ccccccc
-- 006:000000000000000000000000cc000000000000000cc00000ccccc000ccc0ccc0
-- 007:000000000000000000000000000000000000000000cccccc0c000000cccccccc
-- 008:000000000000000000000000000000000000000000000000ccccc000ccccccc0
-- 009:0000000000000000000000000000000000000ccc000cc0c0ccc00c000c00c000
-- 010:00000000000000000000000000000000cc000000c00000000cccc0000000ccc0
-- 011:00000000000000000000000000000ccc00ccc00cccc00c000c0000cc0cc0c000
-- 012:000000000000000000000000cc000000000000000ccc0000c00cc0000000ccc0
-- 013:0000000000000000000000cc000ccc0cccc000c000c00c000c0000cc0cc0c000
-- 014:0000000000000000cc00000000000000000000000ccc0000c00cc0000000ccc0
-- 017:0ccccccc00c00c00cccc00c000cccccc00000ccc000000000000000000000000
-- 018:ccccc0000ccc00000000000000000000cc000000000000000000000000000000
-- 019:0c0c0c0c00c00c00ccccc0c0000ccccc000000cc000000000000000000000000
-- 020:c0ccc0000ccc00000000000000000000cc000000000000000000000000000000
-- 021:cc0c0c0c0cc00c0000cccccc00000ccc00000000000000000000000000000000
-- 022:c00cc0000cc0000000000000cc00000000000000000000000000000000000000
-- 023:0ccccccc00cccccc000000000000000000000000000000000000000000000000
-- 024:ccccc00000000000000000000000000000000000000000000000000000000000
-- 025:ccc00c00000ccccc00000ccc0000000000000000000000000000000000000000
-- 026:0ccc0000c0000000cc0000000000000000000000000000000000000000000000
-- 027:0c0000ccccc00c0000ccc00c00000ccc00000000000000000000000000000000
-- 028:c00cc0000ccc000000000000cc00000000000000000000000000000000000000
-- 029:0c0000cc00c00c00ccc000c0000ccc0c000000cc000000000000000000000000
-- 030:c00cc0000ccc00000000000000000000cc000000000000000000000000000000
-- 033:000000000000000000000ccc00ccc00ccc0000c000c00c000c0000cc0cc0c000
-- 034:0000000000000000cc00000000000000000000000ccc0000c00cc0000000ccc0
-- 035:000000000c0c0ccc0000c0cc00000000000000000000c0cc0c0c0ccc00000000
-- 036:00000000ccccccccccccccc00000000000000000ccccccc0cccccccc00000000
-- 049:0c0000cc00c00c00cc0000c000ccc00c00000ccc000000000000000000000000
-- 050:c00cc0000ccc00000000000000000000cc000000000000000000000000000000
-- 051:0000c0c0000000000000000000000000000000000000000000000000000c0c0c
-- 052:cc0cccc00000000cc0c0ccc000000000000000000c0cccc00000000cccccccc0
--
--
-- 000:123345667889abbcdeff1fedcba86642
--
--
-- 000:00d050808060c040d020e020f010f010f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000502000000000
--
--
-- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57
--