PicoPicoGameEngine

Quick Links

Source Code

g=ppgraph
v=ppscreen
B=v:size()
Bw=B.width

se=ppsemml[1]

function cell(v)
local r=pprect(0,0,16,16)
r.v=v
r.draw=function(s,p,y)
  g:pos(p)
  g:move(s)
  g:move(0,y)
  g:print(s.v)
end
return r
end

function line(x,y)
local r=pprect(x,y,64,64*3)
r.d=0
r.v={}
r.sval=1
r.run=true
for i=1,7 do
local c
c=cell(i)
c.y=i*16-16
r.v[#r.v+1]=c
end
r.draw=function(s)
  for i=1,8 do
  s.d=s.d+1
  if not s.run 
  and s.sval==s:ind() then
    local a
    local b
    a=math.floor((s.d-1)/16)
    b=math.floor((s.d-2)/16)
    if a~=b then
      s.d=s.d-1
    end
  end
  if s.d>#s.v*16 then
   s.d=s.d-#s.v*16
  end
  end
  v:viewport(s)
  g:scale(4)
  g:pos(s/4)
  for i,v in ipairs(s.v)
  do
    v:draw(s/4,s.d)
    v:draw(s/4,s.d-#s.v*16)
  end
  g:scale(1)
end
r.ind=function(s)
local t
t=#s.v-math.floor((s.d+8)/16)
t=(t%#s.v)+1
return t
end
r.val=function(s)
return s.v[s:ind()].v
end
return r
end

l={}
dx=(Bw-192)/2
l[#l+1]=line(dx,32)
l[#l+1]=line(dx+64,32)
l[#l+1]=line(dx+128,32)

bt=ppbutton("STOP")
bt.height=64
p=g:layout(bt,true,true,B)
bt:pos(p)
idx=1

function stopval()
l[1].sval=math.random(1,7)
l[2].sval=math.random(1,7)
l[3].sval=math.random(1,7)
end
stopval()

function start()
v:viewport(B)
for i,v in ipairs(l) do
v:draw()
end
v:viewport(B)
if bt:idle(pptouch()) then
  if idx>3 then
    idx=1
    for i,v in ipairs(l) do
      v.run=true
    end
    stopval()
  else
    l[idx].run=false
    idx=idx+1
 se:play("o7c")
  end
end
bt:draw()
end