local grid=33
local function gridpos(px,py)
local visiblesize=cc.Director:getInstance():getVisibleSize()
local origin=cc.Director:getInstance():getVisibleOrigin()
local finalx=origin.x+visiblesize.width/2+pxgrid
local finaly=origin.y+visiblesize.height/2+pygrid
return finalx,finaly
end
local snake={{x=0,y=0},{x=-1,y=0},{x=-2,y=0}}
local b={}
local dir={x=-1,y=0}
local function snakeupdate()
for i=1,#snake-1 do
snake[i].x=snake[i+1].x
snake[i].y=snake[i+1].y
end
snake[3].x=snake[3].x+dir.x
snake[3].y=snake[3].y+dir.y
end
local function touch()
local function onTouchBegan(touch,event)
return true
end
local function onTouchEnded(touch,event)
dir.x=0
dir.y=1
end
local listener=cc.EventListenerTouchOneByOne:create()
listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN)
listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED)
local eventDispatcher = cc.Director:getInstance():getDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(listener,self)
end
local MainScene = class(“MainScene”,cc.load(“mvc”).ViewBase)
function MainScene:onCreate()
– add background image
local bg=display.newSprite("bg.png")
self:addChild(bg)
bg:setPosition(display.cx,display.cy)
local ui=ccui.Button:create("start.png")
self:addChild(ui)
ui:setPosition(display.cx,display.cy/2)
ui:addTouchEventListener(function()
local new=cc.Scene:create()
cc.Director:getInstance():replaceScene(new)
for i=1,#snake-1 do
b[i]=display.newSprite("body.png")
new:addChild(b[i])
end
local a=display.newSprite("head.png")
new:addChild(a)
local snaked = function()
for i=1,#snake-1 do
b[i]:setPosition(gridpos(snake[i].x,snake[i].y))
end
a:setPosition(gridpos(snake[3].x,snake[3].y))
end
cc.Director:getInstance():getScheduler():scheduleScriptFunc(snaked,0.3,false)
cc.Director:getInstance():getScheduler():scheduleScriptFunc(snakeupdate,0.3,false)
touch()
end)
-- body
end
return MainScene