PicoPicoGameEngine

Quick Links

33がベストスコアでした

ピコピココード

g=ppgraph
B=ppscreen:size()
Bw=B.width-32
Bh=B.height-32
rand=math.random
sc=0
se=ppsemml[1]

o=ppoffscreen.new()
o:create(64*3,32)
function d(x,y,c)
local p
p=pppoint(x+16,y+16)
o:circle(p,15,c)
o:paint(p,c)
p:move(32,0)
o:circle(p,12,c)
o:paint(p,c)
end
d(0,0,g.cyan)
d(64,0,g.red)
d(128,0,g.yellow)
o:bind()

function op()
  local r
  r=ppsprite.new()
  r:texture(
    o:texture())
  r:tile(1)
  r.hitmask=1
  local s
  s=r:size()
  s:inset(8)
  r.hitrect=s
  return r
end

function snake(n)
local p
p=op()
p.o={}
p.p={}
p.add=function(p)
  local t=op()
  table.insert(p.o,t)
  for j=1,32 do
    table.insert(
      p.p,p:pos())
  end
end
for j=1,32 do
  table.insert(
    p.p,p:pos())
end
p.idle=function(p)
  local t,u
  t=p:pos()
  u=p.p[1]
  if t.x~=u.x 
  or t.y~=u.y
  then
  table.insert(p.p,1,t)
  p.p[#p.p]=nil
  end
end
p.n=n
p.drawall=function(p)
for i,v in ipairs(p.o)
do
  local n=p.n
  v:pos(
    p.p[(i-1)*4+1])
  v:loopAnime(
     0.125,{1+n,2+n})
  v:draw()
end
end
p.hit=function(p,t)
  local r=false
  pphitcheck(
    p.o,t.o,
    function(a,b)
      r=true
    end)
  return r
end
p:add()
return p
end

p=snake(0)
p:pos(
  g:layout(
    p:size(),
    true,true,B))
e=snake(2)
e.d=pppoint(2,2)
c=snake(4)
c.repos=function(p)
  p.x=rand(0,Bw)
  p.y=rand(0,Bh)
  p.p[1]=p:pos()
end
c:repos()

over=false

function start()
if over then
else
p:drag(pptouch(),B)
p:idle()
e:move(e.d)
if e.x<0 or e.x>Bw
then
  e.d.x=-e.d.x
end
if e.y<0 or e.y>Bh
then
  e.d.y=-e.d.y
end
end
e:idle()
e:drawall()
c:drawall()
p:drawall()
if e:hit(p) then
  if not over then
    se:play("o4cgcgcg")
  end
  over=true
end
if c:hit(p) then
  c:repos()
  e:add()
  p:add()
  sc=sc+1
  se:play("o7c")
end
g:print(sc)
if over then
  local s
  s="GAME OVER"
  local x
  x=ppfont:size(s)
  x=(Bw+32-x.width)/2
  g:pos(x,200)
  g:print(s,g.red)
end
end