123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- -- 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
- -- <SPRITES>
- -- 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
- -- </SPRITES>
- -- <WAVES>
- -- 000:123345667889abbcdeff1fedcba86642
- -- </WAVES>
- -- <SFX>
- -- 000:00d050808060c040d020e020f010f010f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000502000000000
- -- </SFX>
- -- <PALETTE>
- -- 000:1a1c2c5d275db13e53ef7d57ffcd75a7f07038b76425717929366f3b5dc941a6f673eff7f4f4f494b0c2566c86333c57
- -- </PALETTE>
|