PicoPicoGameEngine

Quick Links

ピコピココード

g=ppgraph
sc=ppscreen
B=sc:size()
Bw=B.width
Bh=B.height
pos=pppoint
sqrt=math.sqrt

function add(a,b,r)
 local v
 v=pos()
 v.x=a.x+b.x*r
 v.y=a.y+b.y*r
 return v
end

function sub(a,b)
return add(a,b,-1)
end

function nml(p)
local q=pos()
local l
l=p.x*p.x+p.y*p.y
l=sqrt(l)
q.x=p.x/l
q.y=p.y/l
return q
end

function len(a)
local dx=a.x
local dy=a.y
return sqrt(dx*dx+dy*dy)
end

rand=math.random

o=ppoffscreen.new()
o:create(32,32)
o:circle(16,16,15)

o:pos(
  g:layout(
    o:size(),true,true,B))

function spario()
local r=pprect()
r.x=rand(0,Bw)
r.y=rand(0,Bh)
r.d=pos()
r.d.x=rand(-10,10)/10
r.d.y=rand(-10,10)/10
r.draw=function(s)
 local d
 d=nml(
   sub(o+pos(16,16),s))
 s.d=s.d+pos(d)/10
 d=len(s.d)
 if d>4 then
  s.d=nml(s.d)*4
 end
 r:move(s.d)
 g:circle(
   s-pos(2,2),4,g.red)
end
return r
end

t={}
for i=1,100 do
local p=spario()
t[#t+1]=p
end

function start()
 o:drag(pptouch(),B)
 o:draw()
 for i=1,#t do
  t[i]:draw()
 end
end