pico-8 cartridge // http://www.pico-8.com version 32 __lua__ --https://ztiromoritz.github.io/pico-8-shooter/ --https://github.com/ztiromoritz/pico-8-shooter/tree/master/p8 function fps() f = stat(7) print("fps: "..f, 0, 120, 1) end t=0 bullets={} function init_stars() stars={} star_cols={1,2,5,6,7,12} warp_f=3 for i=1,#star_cols do for j=1,10 do local s={ x=rnd(128), y=rnd(128), z=i, c=star_cols[i] } add(stars,s) end end end function init_enemies() enemies={} for i=1,10 do add(enemies, { sp=4, m_x=i*16, m_y=60-i*8, x=-32, y=-32, r=12, }) end end function draw_enemies() for e in all(enemies) do spr(e.sp,e.x,e.y) end end function update_enemies() for e in all(enemies) do e.x = e.r*sin(t/50) + e.m_x e.y = e.r*cos(t/50) + e.m_y end end function init_player() player={ h=3, sp=1, x=64, y=64, } end function draw_health() inc=10 for i=1,player.h do spr(2,(inc*i),1) end end function draw_player() spr(player.sp,player.x,player.y) end function update_player() if(t%6<3) then player.sp=0 else player.sp=1 end end function fire() local b={ sp=3, x=player.x, y=player.y, dx=0, dy=-3, } add(bullets,b) end function draw_bullets() for b in all(bullets) do spr(b.sp,b.x,b.y) end end function draw_stars() for s in all(stars) do pset(s.x,s.y,s.c) end end function update_stars() for s in all(stars) do s.y+=s.z*warp_f/10 if s.y>128 then s.y=0 s.x=rnd(128) end end end function _init() player_xpos=64 player_ypos=64 init_stars() init_player() init_enemies() end function _update60() t=t+1 if ( t > 1000) then t=0 end for b in all(bullets) do b.x+=b.dx b.y+=b.dy if b.x < 0 or b.x > 128 or b.y < 0 or b.y > 128 then del(bullets,b) end end if (btn(0) and player.x > 0) player.x -= 2 if (btn(1) and player.x < 127) player.x += 2 if (btn(2) and player.y > 0) player.y -= 2 if (btn(3) and player.y < 127) player.y += 2 if btnp(4) then fire() end update_stars() update_player() update_enemies() end function _draw() cls() fps() draw_health() draw_stars() draw_player() draw_bullets() draw_enemies() end __gfx__ 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 005dd500005dd500005dd500000000000b3333b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0455554004555540045555400000000000b33b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 04466440044664400446644000088000000bb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 07466470074664700746647000088000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 07898970079898700700007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 57089075570980755700007500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 55008055550800555500005500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000