ÎÌÌÌ̈ˆˆ¬ªªª¬ˆˆˆ¬ÌÌ̬ÌÀ̬ÌÀ̬ÌÀÌÌÌìÌÀÀî̬ÀÌÀ¬ÀÀÀ¬ÀÀÀ¬ÀÀÎÌÌÌ̈ˆˆ¬ªªª¬ˆˆˆ¬ÌÌ̬ÌÌ̬ÌÀ̬ÌÀÌÌÌìÌÀÀî̬ÀÌ̬ÀÀÀ¬ÀÀÀ¬ÀÀ¬ÌÌ̬ªªª¬ª¬ª¬ªÊ̬ªªªŒˆˆˆÌÀÌÎÌÌÎ̬̪ªÀ쬪ÀÀÀÌîÀìîÌÌîî¬ÌÌ̬ªªª¬ª¬ª¬ªÊ̬ªªªŒˆˆˆÌÀÌÎÌÌÎ̬̪ªÀ쬪ÀÀÀÌîÀìîÌÌîî >—?ÝÝÝ Ð ÝÝ ÝÐ ÐÝ Ð Ý Ý Ð ÐÝÐ Ð ÐÝÐÝÐ ÐÝÝÝÝ Ð ÐÝÐ ÐÝÐÐÝÝÝÐÝÝÝ Ð Ð ÝÐ Ð ÝÝ ÐÝÐÝÝÝÝÝ ÐÐÐÐÐÐ ÐÝÝÝÝÝÝÝ ÐÝÐÝÝÝ Ý ÐÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝ ÝÝ ÐÐ ÐÐÐÝ ÐÝÝÐÝÝÐÝÝ ÐÝ Ð Ð Ð ÝÝÝÝ ÐÝÐÝÝÐÝ ÐÐÐ ÝÐÐÝÐÝ Ð ÐÝÝ ÝÝÝÐ ÝÐ Ð ÐÐÝÝÐ Ð ÝÐ ÐÝÐ Ð ÐÐÐÐÝÐ ÐÐDDÐÐÐÐ Ð ÝÐ Ð Ð ÐÝD Ð Ð ÝÐ ÝÐÐ ÐÝÐ ÐD ÐÝÐÐÝÝÝÝÝÐ ÐÐ ÝÐ DDÐÝ ÐÝÝÝÝÝÝÝÝÝÝ Ð ÐÐ ÝÐÐDÐÝ ÐÝÝÝÐ ÝÝÝÝÝ Ð Ð ÝÐ ÐÐÐÝÝÝÝÝÐÝÝÐÐ ÐÐ ÐÝ ÐÝÐ Ð ÝÝÝÝÝÝÝÝÝÝÝÝÝ ÝÝÝÐ Ð ÐÝÝ ÐÝÐÝÝÝÝÝÝÝÝÝÝÝÝÝ ÐÐ ÝÐÐÐÐ ÐÝ ÐÐ ÐÝÝ ÐÝ ÝÝÝÝ ÝÝ ÝÐ Ð Ý ÝÝÝÐÐÐÝÝÝ ÝÐÐÐ Ý Ý Ð ÐÝÝ ÐÝÝÝ Ð ÝÐ ÐÝ ÐÐÝÝÝÝÝÝÝÝ ÐÝ ÐÝ Ð ÐÐ ÐÐ ÝÝÐ ÐÐÝÐÝÝ ÐÝÝÐÐÐÐÝ Ð Ð Ð ÐÐÝÐÐ ÐÝÝ ÐÐÐÝÝÝÝÝÝÝ ÐÐÝÐ ÐÐ Ý Ý Ý Ý ÝÝÝÝ Ý ÐÝ ÝÝ ÝÐÝÐ Ð Ð ÐÐÝÐÐ ÐÐÐ Ð ÝÝÝ ÝÝÐÐÝ Ð ÐÝ ÐÐ Ð ÐÐÐÐ Ð Ý ÐÝÐÝÝÐÝÝÝÝ Ð ÝÐ ÐÝÝ Ý ÐÐ ÐÐÐÝ ÐÝ ÝÐÝ ÝÝÝÝÝÝÝÝÝÝÝ Ð ÐÝÝÐÝÝÐÝ Ð ÐÐÝ ÐÝ Ð ÝÝ ÝÝÐÝÝÐÐÐÝÐ Ð ÐÝÐ ÐÐ ÐÐ Ý ÐÝÐÝ ÝÝ Ý ÐÝÐ ÐÐ ÐÐ Ð Ý Ð ÐÝÝ Ý ÐÝÝÐ Ð Ð ÐÐÝÐÐ Ð ÐÐ ÝÝÐÐ ÐÝÝ ÝÐ ÝÐÐ Ð ÐÝ ÐÐÝÝÐ ÐÐ Ý ÐÐÝ ÝÝ ÐÝ ÐÝ ÐÐÝ ÐÐÝÝÐ ÐÐ Ð ÝÐÝ ÐÝÝÝÝ ÐÐÐÐÐÐ ÐÝÝÐ Ð ÐÐ ÐÝÝÝ ÝÝÐÝÐÐ ÐÐÐ ÝÐ Ý Ð ÝÝÐÝÝÝÝÝÐÝÝÐÐ ÝÐ Ð ÝÐÝÐ Ý Ý ÐÝÝÝÐÐ Ð Ý ÝÐÐ ÝÐÝÐ ÝÐ ÐÐÐÝ ÝÝÝÝ ÝÝÝ Ý Ý ÝÐÝÐÐ ÐÐ ÝÝÐÝÝÝÝ ÐÝ ÝÐÝ ÐÝÐÐ Ý ÝÝÝ Ð ÝÐÝÐÝÝÝÝ ÝÝÐ Ý ÝÝ ÐÐ ÝÐÐÐ ÐÝÐÝ ÐÝÝÝÐÝÝ Ý Ð ÝÐÝÐÝ ÝÐÐÝ Ý ÝÝÐ ÐÝÝÝÝÝÝÐÝÐÐ Ý ÐÝÐÝ ÝÐ ÝÝ Ý ÐÝÐ Ý ÐÐÝÝÐÐÐ ÐÝÝÝÝ ÝÝ ÝÝÐ ÝÝÐ Ý ÝÐÐ ÐÝÐÐ Ý ÝÝÝÝ Ð Ð Ý Ð Ý ÐÐ ÝÝÐ Ð ÝÐÐÝÐ ÐÝ ÝÝ ÝÐ ÝÝÝÐÝÐÐ ÝÐÐÐÐÐ ÝÝÐ ÝÐÐ ÝÝÐÝÐÝ Ý Ð ÐÐ ÝÐÐÐÐÐÐ ÐÝÐÝÐ ÐÐ Ý ÐÐÐÐÐ Ý ÐÐ ÐÐÐÐÝÝÐÐ Ý ÝÐÐÝÐ ÝÝÝ ÐÐÐÐÐÝÝÝÐ Ð Ý Ð Ð Ð ÐÐÝÐÐ ÐÐÝÐÐÝÐÝ Ð ÝÐÐÐÐÐÝÐÐ ÐÐÝÐ Ð ÐÝÐÐÝÐÝ Ð Ý ÝÐÐ ÐÐÐÐ Ð Ð ÝÐÝÝÝ Ý ÝÝ Ð ÐÐÐÐ ÐÐÝ Ð ÝÐÝÝÝ ÝÝÐ Ð ÐÐÐÐÐÝÐÐÝ Ð ÝÐÐÝÐ Ð Ý ÐÐÐÐÐÐÐÝÝÐÐ ÐÐ ÝÐÐÝÐ Ð ÐÐ Ý Ð ÐÝÐ ÐÐÐ ÐÐÝ ÐÝ ÝÐÐÐ Ð ÐÝ ÝÐ Ð ÐÝ Ý ÐÐ Ð Ð Ð ÐÝ ÐÝ Ð ÐÝ ÝÝÐÝ Ð Ð ÐÐÐ ÐÝ ÐÝ Ý ÐÝ ÐÝ Ý ÝÐ ÐÐÝ ÐÝ ÐÝÝÝÐÐ ÝÐÝ Ð ÝÐ ÝÝ ÐÝÝÐ ÐÐÝ Ð ÝÝ Ð ÐÝ Ð ÐÝÝ ÝÐÐ Ý ÐÝÝÝÐ Ý ÐÝÝÐ ÐÐÐÝ ÝÐÐÝÐÐÐÝÝÐ Ý Ý ÐÝ ÐÐÐÐ Ý ÐÐÝÐÐÝÐ Ð ÝÐ ÐÝ ÐÐ Ð ÐÐÐÐ ÝÝÝ Ð Ð ÐÝ Ð Ý Ð ÝÐÐÝ ÝÝÐ Ð Ð ÐÝÐÐÐ Ð Ð Ý Ð ÐÐÝ ÝÐÝÐ ÝÐÐÐÐ Ð Ð Ð Ð Ð ÐÝ ÝÐÐÐ ÐÐ Ð Ð Ý Ð Ý ÝÐÐ ÝÐ Ð ÐÐ ÐÐ ÐÐÐ ÐÝÝ ÝÐÐ ÝÝÐ ÐÐÐ ÐÝ ÝÐÝÐ Ð Ý ÝÝ Ð ÝÐÐ ÝÐ "ÐÝÐ Ý ÝÝ ÐÝÝ Ð Ð ÝÐÐ ÝÐ ""ÐÝÐÐÝÐÐ ÐÐÝÝ ÝÐ Ý Ð ÝÐ """ÐÝ ÐÐÝÝÐ ÐÝ ÝÝÝÐ Ð Ð ÐÝÐ """ ÝÐÐÐÐÝ Ý Ý ÝÝÝÝÐ Ð Ð ÝÐ """ ÝÝÐÐÐÐÝÐÐÐ ÐÝÝÝÝÐ ÝÝ"" Ý ÝÐÐ Ý Ð ÝÐ ÝÐÐÝÐ Ð Ð Ý "ÐÝÐÐ ÐÐÝÝÐÐ Ð ÝÝÐÐ ÝÐÐÐ ÐÝÐÐ ÐÐ ÝÝ Ð Ð ÝÝÝ ÝÐ Ð ÐÝÝ ÐÐÐÝÐ ÐÐÐ ÐÝÝÝ ÝÐ ÐÝ ÝÐÝÐ ÝÝÝ ÝÐÝÐÐÐÝ ÐÝÐ ÐÝ Ý Ð ÐÐ ÝÝ ÐÝ ÐÝÐÐÐÐ Ð ÐÐÐÝ Ð ÐÝÐÐÐ Ý ÐÐÝÐÝÐÝ ÐÝÐ ÐÝÐ Ð ÐÝÝ ÝÐ Ý ÐÝÝÝÐÐ ÐÐ Ð ÐÐ Ð ÐÝÐ Ð ÐÐÐÝ ÐÐ ÐÐÝÐÝÝÝÐÝÐ Ð Ð Ð Ð Ð Ð ÐÐÝÐ ÐÐÐÝ ÝÝÝÝ Ý ÝÐ ÐÐ Ð ÐÝÐ ÐÐÐÐ Ý ÝÝÝÝÝÝ Ý Ð ÐÐ Ð Ð Ð ÐÝ ÝÐ ÐÝ ÝÝÝÝ ÐÐ ÝÐ Ð ÝÝÝÐ ÐÐÐÝÐÐ ÐÐ ÝÝÐÝÝÝÝÝ Ð ÐÐ Ð ÝÝÐÐ ÝÐÝÝÐ Ð ÐÐ ÐÐ ÐÝÝÝÐÝÝÐ Ð Ð Ð ÐÝÝ Ð ÐÝ ÐÝÝÐ Ð Ñ ÐÝÝ Ð ÐÝÐ ÐÝÐÐÐÐÝÐÝ ÐÝÐÐÑÝÐÝÐÝÐÝ Ð Ð ÝÝÐ ÐÐÐÐÝ Ð Ð Ý ÝÝ ÝÐ ÐÝÐ ÝÝÐ ÐÐ ÝÐ ÐÝÝ ÝÐÝÝÐ ÝÐÐÝÐ Ð ÐÝÐ ÝÐÐÝÝÐÝÐÝ ÝÐ ÐÝ Ð ÝÐ Ý Ý Ý ÝÝ ÐÐÝÐÝ ÝÝÝÝÝ ÝÝÝÝ Ð Ý Ð ÐÐÐ Ð Ý ÝÝÝÐ ÐÝÝÝ ÝÝÐÝÝÝÝÝÝÝ ÐÐÐÐ Ð Ð ÐÐ ÝÐÐÝ ÐÝÝ Ð ÐÝÝÝÐÝÝÝÐ Ð Ð Ý ÝÐ Ð ÐÝÐÝÐ Ð ÝÝÝÝÐ ÝÝÝÝÝÐÝÝ Ð Ý ÝÝ ÐÝÝ ÐÐÐ ÝÝÝÝÝÝÝÝÝÝ Ý ÝÝ ÐÐÝÝÐÐ ÐÐÐÝÐÐÐ ÝÝÝÝ ÝÝÐÝÐÝÐÝÐ ÐÝ ÐÝÝÝÐ ÐÝÝÝÝ Ð ÐÝÐÐÐÐ ÐÐÐ ÝÝÝ ÐÝÝÝÝÝÝÐÐ ÐÐÐ Ð ÐÝ ÐÝÝÝ ÐÝ ÐÝ ÝÐÐÐÝÐ Ý ÝÐÝÐÝ Ð Ð ÐÝÐÝÝÐ Ð ÝÐÝÝÐ ÝÝÐÝÝÝÐ ÐÝÝÝ ÐÐÝ ÝÝÝÐ ÝÐ ÝÝÝÝÝÝÝÝÝÝÝÝÝ ÐÐ Ý Ð Ý ÐÐÝÝÝÝÝÝÝÝÐÝ ÝÝÝÐÝÐÐÐÐ Ð ÝÝÝÐÐ ÐÐ ÐÐÐ ÐÝÝ ÐÝÝÐÐ ÐÐ ÝÝÐÐÐÐÐ ÐÝÝÝÝÝÝÝÝ Ð ÐÝÝ Ð Ý ÐÐ ÐÐ Ð ÐÐ Ð Ð Ð Ð ÝÐ Ð Ð Ý Ý ÝÐ ÐÝ ÐÐÝÐÐ ÝÐÐÐÐ Ð ÝÝ ÝÐ ÝÐ Ð ÐÐÐÝÝ ÝÐÝ Ý Ý ÐÐ Ð Ð ÐÝÝÐÐÐÝÐ ÐÐÐ ÐÝ ÐÝÐÐ ÝÝ Ý ÝÝÝÝ ÐÐÝ Ý ÐÐ ÝÐÐÝÝÝÝÐÝÝÝÝÐ ÝÐÐÐÝÐÝÐ Ý Ð ÝÝÝÝ Ð ÝÐÝ ÐÝ ÐÐÐÝÐ ÐÐÐÐ ÝÝ Ý ÝÝ Ð ÝÐ ÐÝ ÝÝÐÐÝÝÝÐÝ ÐÐÝÐ ÐÐÐÝ ÝÝÝÝÝÝÝÝÝÝ Ý ÐÝ Ý ÐÝÝÝÝÝÝÝÝÝÐÐ Ð ÝÝÐÝ ÐÐÐ ÐÝÝ ÐÐÝÝ ÐÝÐÝ ÐÝ Ð Ý Ð ÐÝ ÐÝ ÝÝÐÐÐÝÝÝÝ ÐÐÐÐÝ Ð Ý ÝÐÝÝÐÝÝÐÝÝ Ð ÐÐÝÐÝÝÝ Ý Ý ÐÝ Ð ÝÐÝ ÐÐÐÝÝÝÐÐ ÐÝý -- title: n3wt0n -- author: fnordomat -- desc: mini shooter inspired by NewtonWars -- script: lua t=0 tpr=-1 tpr7=-1 mode={persist=0} p={x=20,y=49,c=1,aim=0,ff=1,s=5} -- targets / opponents (diameter=s) ops={{x=200,y=77,s=3}} -- obstacles (planets, mass=m) obs={ {x=120,y=90,m=89}, {x=90,y=40,m=77} } -- missiles in flight w={} function fire(x,y,aim,ff) w[#w+1] = {x=x,y=y, active=true, vx=ff*math.cos(aim), vy=ff*math.sin(aim), ttl=1000, trail={{x=x,y=y}}} end function TIC() -- when "a" is pressed, change position if btn(6) then 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 else -- modify angle and force (very rough) if btn(0) then p.aim=p.aim-5/360*2*math.pi end if btn(1) then p.aim=p.aim+5/360*2*math.pi end if btn(2) then p.ff=p.ff*0.97 end if btn(3)and p.ff<4 then p.ff=p.ff+0.1 end end -- fire a missile if btn(5)then if t-tpr>1 then fire(p.x,p.y,p.aim,p.ff) end tpr=t end -- don't delete trails unless missile fals into a planet if btn(7) then if t-tpr7>1 then mode.persist = 1 - mode.persist end tpr7=t end cls(0) -- draw player symbol circ(p.x, p.y, p.s/2, p.c) line(p.x+math.cos(p.aim)*p.s/2, p.y+math.sin(p.aim)*p.s/2, p.x+math.cos(p.aim)*(p.s/2+p.ff), p.y+math.sin(p.aim)*(p.s/2+p.ff), 2) for k,v in ipairs(ops) do circ(v.x,v.y,v.s,2) end -- mass scales with radius^3 for k,v in ipairs(obs) do circ(v.x,v.y,v.m^(1/3),13) end dt = 1.0 -- print(#w, 12, 12, 2) if mode.persist==1 then print("P", 6, 12, 4) end -- for each missile in flight for k,m in ipairs(w) do m.ttl = m.ttl - 1 if m.ttl<=0 then if mode.persist == 0 then table.remove(w, k) end end if m.active then m.x = m.x + dt * m.vx m.y = m.y + dt * m.vy for k,v in ipairs(obs) do fx = (v.x-m.x) fy = (v.y-m.y) sqn = fx*fx + fy*fy ax = v.m * fx / sqn^(3/2) ay = v.m * fy / sqn^(3/2) m.vx = m.vx + ax m.vy = m.vy + ay if sqn < v.m^(2/3) then m.active=false end end -- optional: make screen boundary absorbing -- if m.x<0 or m.x>=240 or -- m.y<0 or m.y>=138 then -- m.active=false -- end table.insert(m.trail, {x=m.x, y=m.y}) ox = nil for ki,te in ipairs(m.trail) do if ox ~=nil then line(ox,oy,te.x,te.y,13) end ox=te.x oy=te.y end else -- inactive, just wait for ttl to expire end end t=t+1 end