Lua贪吃蛇开发笔记2

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)


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值