您的位置:首页 > 编程语言 > Lua

Lua贪吃蛇开发笔记2

2015-10-23 22:08 453 查看
Lua贪吃蛇开发笔记2

---6.更新蛇头坐标

local a = 0 --用来控制蛇头速度,可以试一下没有这个是什么情况--我也不清楚为什么--

--问过大神之后解释说,Lua的计划任务是1秒钟执行60次且不能更改时间,所以说设置一个变量,a自加到30时再执行计划任务,

这样就能保证在1秒钟执行30次,从而达到控制速度的目的,嗯,似懂非懂--

local function move()

a=a+1

if a == 30 then

if snakeHead.dir == 1 then --向上运动,行数加1--

snakeHead.row = snakeHead.row + 1

elseif snakeHead.dir == 2 then --向下运动,行数减1--

snakeHead.row = snakeHead.row - 1

elseif snakeHead.dir == 3 then

snakeHead.col = snakeHead.col - 1

else

snakeHead.col = snakeHead.col + 1

end

snakeHead:setPosition(snakeHead.col*60,snakeHead.row*60)

a=0

end

end

layer:scheduleUpdateWithPriorityLua(move,0) --执行计划任务--

---7.添加蛇身

添加蛇身有两种情况,1).只有头还没有身体,就加在头后面 2).已经有身体了,就加在最后面

-----添加身体-------

local snakeBody = food:create(3) ---type=3时代表蛇身,还记得么---

if #allbody == 0 then --#allbody==0,没有身体--

snakeBody.dir = snakeHead.dir

if snakeBody.dir == 1 then

snakeBody.col = snakeHead.col

snakeBody.row = snakeHead.row - 1 --蛇头向上走,蛇身要在蛇头下一行,其他不解释--

elseif snakeBody.dir == 2 then

snakeBody.col = snakeHead.col

snakeBody.row = snakeHead.row + 1

elseif snakeBody.dir == 3 then

snakeBody.col = snakeHead.col + 1

snakeBody.row = snakeHead.row

else

snakeBody.col = snakeHead.col - 1

snakeBody.row = snakeHead.row

end

else --如果有身体时--

local lastBody = allbody[#allbody] --数组的最后一个元素--

snakeBody.dir = lastBody.dir

if snakeBody.dir = 1 then

snakeBody.col = lastBody.col

snakeBody.row = lastBody.row - 1

elseif snakeBody.dir == 2 then

snakeBody.col = lastBody.col

snakeBody.row = lastBody.row + 1

elseif snakeBody.dir == 3 then

snakeBody.col = lastBody.col + 1

snakeBody.row = lastBody.row

else

snakeBody.col = lastBody.col

snakeBody.row = lastBody.row - 1

end

end

snakeBody:setPosition(snakeBody.col*60,snakeBody.row*60)

bgc:addChild(snakeBody)

allbody[#allbody+1] = snakeBody

end

end

---8.移动所有身体

local b = 0 --控制移动速度,不知道为什么--

local function moveBody()

b=b+1

if b == 30 then

if #allbody > 0 then --有身体--

for i=#allbody,1,-1 do ----什么意思?-----

local nowBody = allbody[i]

if nowBody.dir == 1 then

nowBody.row = nowBody.row + 1

elseif nowBody.dir == 2 then

nowBody.row = nowBody.row - 1

elseif nowBody.dir == 3 then

nowBody.col = nowBody.col - 1

else

nowBody.col = nowBody.col + 1

end

nowBody:setPosition(nowBody.col*60,nowBody.row*60)

if i>1 then

nowBody.dir = allbody[i-1].dir

else

nowBody.dir = snakeHead.dir

end

end

end

b=0

end

local node2 = cc.Node:create()

layer:addChile(node2)

node2:scheduleUpdateWithPriorityLua(moveBody,0)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: