2,]']>S}Wup8d%qy)6o;]AsVl3;85322233444556678899:;<<=>?C@@@@@@@@@@@@@@@@@@@@@@@@30(;4!"3 33  2=.0 =# 3#23"23#"3#"3#" ""2""""""""""!""!""!                $*PNG  IHDR+ { zTXtRaw profile type exifxmP[ =&uu'a۾no+B)%boPnZ ыX㢟Uƨ{H:YNjiCCPICC profilex}=H@_ST ␡:E. EjVL.&-IZpc⬫ ~8)HK -b<8ǻ{wЪ2KnTRW+B"8fef$) u_b<ܟc@- V7, My8ʲJ|N 94r10PLTE $),028?SmGbKGDH pHYs  tIME  7 IDATxڥ[oXvɢ_i;I ( (`tl±(ۘE"qLR ;N,r@"y)F &. l bQ@þnP_I9%{uS9x N[,8m[ez,Ӳ|rg;mjZZdX"D(R|+2[繞zmvmi\k!.\sfCt5V`%x!ɅAm8@"rxg.e[՛Y4)?_(b_J;>pp;,&F^On6 ꦡjT 2`z#sZw.4DMij,\u}VRFx`bCGӐF b-s)3fs"< Ulyl=Chc zaTq/L{!Dl㑮(j5 Vw!˫z+]Ji,`5Vz:p"L]zE`QRMM:Дq{t3pkqa ?:#AuzN&1hY*/|#_RvΦy V w\Y%s'@}ny`#,@n|| A,7~0Sȵ|*A PJ?Tk7!#VK#`@i'a$Āe傊 p y.+.:sfb5eoMܔu I>Fa|(Z^noDF%2wBs-t#2SWdsxJ{NkjIfq낺#4- ^t1rȱ>0a߫ޙSc9ǝ_e7ЦŘyTܪk:"8XnL4}*8[_B[qy֌9 Ppy@aUR/F̩P 幻sF^t 6+NG7O-@:˵mAL#OF-@fKl6Vi6Xx _#˛HDv1YD*JKv"Ajm6U` -btՠ\nieZds8*M ^]# ΙMV=I j/q@=^x ѡ{ېGn.!,'Ri?Z-oI;޼f4EQ٥^,Z{V uϴ⺋fѼrZP+ٟ8;=ȻۄhULX>_֭q,rPk}6Wzy{ k3=>+OHGI 9T<Ҹ%UeS,x1ysme&ݮ{óoan;YEp'l"y[ccn7qyvq˗.v,в'p]EY!==sqK\-ڂf9P,9}Fgzû} ~U:๺75?F+ˌڶRIQV@G^SG; {v 7Юw@B1Wqߑg3*gsRUfx"$,@VsMW|: ך^uQ3T~'i~ O~ſ[aV4m|[Ƽg+ =(bNxr=S ۵ܛ?žِgMMD)e9=;w#p1w?je6O_>h !%vλ@}Ÿ NnW5lC`>Z,MES޽wkḇ ؏z ! n0U 勰΄-ޙ-oB|n7-cƯߥ6CU6+e6>wuO8&pϿ֋=.7Ix+;, 0{]]`ٷ{^Z}&" 䄩KQ/II_t`:;\04p21"/eTۢ:C|Y{sVP': @zE]`g<|:I {AD:Պo:*ku~~\*Q4Bb\m)ioIkD5PiޜVN6=[,.9ݬ>=@V}{aq: -*l~|AqJXշԛbU 3\mLjVB·PB8;I_U8be2k<5ۧd FՑ3bbcA61?=y:~/3,!J4ҮT#, ^g@ЙOɈ5C6/K?E~AX.Q2b5ֻCOS,_NP)cS?9뇧ȜUrZ4ZI(^B!KN K)e6%O*ѨXY1r:X!I["Ʃ͜1LC`1"4 YdiTy-Q~^!WaFz)7&6*[j3MSf }AGo`S_]^md6NL;bQFKIe@F&XQXĔq_읎k(CFwڲ9juMIʅ]jD/ƪoMNte#(8Gfw2;U+@xރjcVǼ*kijP:l#:lچ͝BSd-/K0qIx TLT9ں3Uk>D#9_l"*I"q8t{%9[3|5޻DB2eKL^,X(lqˀ\*QIzjUl1A[]ZC=CYH Va(b6](@t RB\-q!cv s(&2c3v֍a@γ{aq%zߏ֤AMqcJY \J8=gZi;~pwvB߂o78rҔhA.C.).0- 6@BCժ%V-r&܎aH{XCp|eش+=V-R1檀8u+P1nA 9mY6 WeP2SdIvP{@unywe:lb^_ nyVӲ xIm~Qk,b/ fZiˮ7gEgM--Hwyc健:6UMR1UǨXvɦFV-TV0!4Æf(ZN{zG(Q/$]MV'9?z9M@u5lK5*ظVIZP{ͬ)^6ev q\8vç)i6(t>Wuh)K,/a{y~ ˱H1qDh gu: 0-LJ1rIBylX6*J:!66\o|E{O2lfu鑂; ~ 7$' xe>xwc\~trf`PM×OnQSzjz|.k)A' 1/| cZEBk/ . 6(l{oDUĠc 1b, HP/?o/6398slƂV)t;5v!kc_vssMrYױ3m<)O#U7nms-K{#2a:IL%]q5# ӕ%n>%u*](w[.T"6Puߛ`Mml0rZ`by=W`㙛@v3Q۫^iZbȇV`;10)FR6'3XkƏ wD\2aF}NQ׿M({>\a&V U8u`c7vk[~*C(|3iMіbĂX 7 UrjEO!U[QRTFE бAb ^֪rN59M|:2n=N#DVѦuG(` abԞkc([=<`s/xՇ0f_ L.-5Œv L%g[zObo*普gS+'lK,1 HiQWS:+ ZuZ3]Y <@|>rG4M?-7iNVTSt]YJ#rbm3-O 1\(,WfX Y S!5c!q)u]%UkY٦(9aNZ=4KM(SĠ?g9])TMU4p?j%+xMUě 2O f"P/p_mT(kH 4s[t}3;C 6t`]Gty9dҲ,”18S8UX='fغfc픟-`=ηjJ $byZ)LEr(b/O4άVv7t9;}TAnOځcAD*1vX.cS7V\_fPJdRǢmTpi\P-Jg.E`]OO |OE`{AB-pdvxh+6b[{l3CVjv!h n+8)U\ y%Ϭ{le8, @G HG` %"qMXLW /P0T ŧ&S$aY!ӐK(Ze|gU+{-'1>v( }H?ys_title.bd/2 then print("Press Start",101,121,15,false,1,true) print("Press Start",100,120,12,false,1,true) end if btn(4) and s_title.start==false then s_title.bd=8 s_title.start=true music() sfx(0,20,70) spawn_wave(118,40,2,10,4) end if s_title.start then s_title.tmr=s_title.tmr-1 if s_title.tmr==0 then p.x=16 p.y=60 change_scene(1) end else spr(72,112,32,-1,1,72,0,1,2) end --Game: 1 elseif s==1 then render_stars(-0.25,0) if btn(0) then p.y=p.y-1 end if btn(1) then p.y=p.y+1 end if btn(2) then p.x=p.x-1 end if btn(3) then p.x=p.x+1 end p.x=math.clamp(p.x,8,232) p.y=math.clamp(p.y,8,128) if btn(4) and p.sd==0 then spawn_bullet(p.x+8,p.y,0,math.random(p.pow/2,p.pow),276) spawn_wave(p.x+8,p.y,4,7,1) sfx(1,36,10) p.sd=10 end if p.sd>0 then p.sd=p.sd-1 end if t%60==0 then spawn_enemy(240,math.random(0,120)) end check_colission() check_player_colission() render_bullets() render_enemies() render_explosions() render_txt() spr(288+math.floor(t/6%4)*2,p.x-8,p.y-8,0,1,0,0,2,2) --Game Over: 2 elseif s==2 then print("Keith is rekt son!",0,0,12) end render_waves() t=t+1 end function change_scene(i) t=0 s=i s_title.start=false s_title.tmr=99 s_title.bd=64 end function check_overlap(obj1,obj2) if obj1.x>obj2.x and obj1.xobj2.y and obj1.y 0 then circb(e.x+8,e.y+8,8,e.ht+7) e.ht=e.ht-1 end spr(256+math.floor(t/6%2)*2,e.x,e.y,0,1,0,0,2,2) if e.free then enemies[i]=nil end end end function render_bullets() for i in pairs(bullets) do local b=bullets[i] b.ls=b.ls-1 b.x=b.x+b.xspd b.y=b.y+b.yspd if b.ls<1 or b.free then bullets[i]=nil end spr(b.sprt,b.x-4,b.y-4,0,1,0,0,1,1) end end function render_stars(x,y) for i in pairs(stars) do local s=stars[i] local color=12 local spd=s.speed s.x=s.x+x*spd s.y=s.y+y*spd if s.x<0 then s.x=241 end if s.y>135 then s.y=0 end if spd==1.5 then color=13 end if spd==1 then color=14 end if spd==0.5 then color=15 end pix(s.x,s.y,color) end end function render_waves() for i in pairs(waves) do local w=waves[i] w.ls=w.ls-1 w.size=w.size+w.speed if w.ls<1 then waves[i]=nil end if not w.f then circb(w.x,w.y,w.size,w.color) else circ(w.x,w.y,w.size,w.color) end end end function render_explosions() for i in pairs(explosions) do local ex=explosions[i] ex.f=ex.f+0.35 spr(320+2*math.floor(ex.f),ex.x-16,ex.y-16,0,2,0,0,2,2) if ex.f>5 then explosions[i]=nil end end end function render_txt() for i in pairs(txts) do local d=txts[i] if d.y>0 then d.y=d.y-0.5 end d.ls=d.ls-1 print(d.amt,d.x+1,d.y+1,0) print(d.amt,d.x,d.y,d.c) if d.ls<1 then txts[i]=nil end end end function math.clamp(n,low,high) return math.min(math.max(n,low),high) end