-- 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 --