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)
---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)
相关文章推荐
- Lua贪吃蛇开发笔记1
- 二、lua语言基础2
- LuaJava:LuaJava 初探
- LuaJava: 一步一步调试LuaJava
- LuaJava:一点一点写Example 1
- lua程序设计
- LeetCode(150) Evaluate Reverse Polish Notation
- LeetCode(150) Evaluate Reverse Polish Notation
- Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区
- 一、lua基础知识1
- lua: userdata的metatable使用
- lua用UTF-8处理汉字
- lua的string库
- Lua 的冒号
- NLua Example
- lua string 分割字符串
- uLua在IOS下require报错
- lua封装
- lua字符串截取
- Lua环境