Lua贪吃蛇开发笔记1
来源:互联网 发布:阿里健康大数据 编辑:程序博客网 时间:2024/05/21 09:25
--------Lua添加音乐-------
cc.SimpleAudioEngine:getInstance():playMusic("**.mp3",true)
------Lua添加成绩-------
local score = 0
local scoreLabel = nil
scoreLabel = cc.Label:createWithSystemFont("Score : 0","",字号)
scoreLabel:setPosition(*,*)
layer:addChild(scoreLabel)
scoreLabel:setColor(cc.c3b(*,*,*))
在需要加分的地方加如下代码
score = score + 10 (加10分)
scoreLabel:setString(string.format("Score : %d",score))
-------真随机---------
math.randomseed(os.time())
----------Lua触摸监听----------
local listener = cc.EventListenerTouchOneByOne:create()
listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCH_BEGAN)
listener:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCH_MOVED)
listener:registerScriptHandler(onTouchEnded,cc.Handler.EVENT_TOUCH_ENDED)
cc.Director:getInstance():getEventDispatchr():addEventListenerWithSceneGraphPriority(listener,layer)
--------------------MenuScene场景----------------------
local MenuScene = class("MenuScene",function()
return cc.Scene:create()
end)
function MenuScene:create()
local scene = MenuScene.new()
scene:addChild(scene:init())
return scene
end
function MenuScene:ctor()
self.visibleSize = cc.Directior:getInstance():getVisibleSize()
end
function MenuScene:init()
local layer = cc.Layer:create()
return layer
end
return MenuScene
--------------------------------------------------------
-----------------GameScene主逻辑---------------
---1.在背景上添加正方形的阴影
--背景层 背景层颜色,透明度 背景层尺寸
local bgc = cc.LayerColor:create(cc.c4b(84,81,78,150),640,640)
bgc:setPosition(0,220)
layer:addChild(bgc)
---2.在阴影上画格子(10*10)
--画线 for循环
for i=0,9 do
--竖线 横线
local shuxian = cc.DrawNode:create()
local hengxian = cc.DrawNode:create()
----------画线段------起点------------------终点---------------线宽---线颜色------
shuxian:drawSegment(cc.vertex2F(i*60,0),cc.vertex2F(i*60,600),1,cc.c4f(*,*,*,*))
hengxian:drawSegment(cc.vertex2F(0,i*60),cc.vertex2F(600,i*60),1,cc.c4f(*,*,*,*))
--在背景层上添加横线,竖线----
bgc:addChild(shuxian)
bgc:addChild(hengxian)
---3.添加蛇头(位置随机产生)
首先将蛇头,蛇身,食物重新封装一个类,节点Snake
构造函数中:
self.col = 0
self.row = 0
初始化中传参数type,为类型,类Snake中,type=1时,表示蛇头,type=2时,表示食物,type=3时,表示蛇身
local snake = nil
if type == 1 then
snake = cc.Sprite:create("snakeHead.png")
elseif type == 2 then
snake = cc.Sprite:create("snakeFood.png")
elseif type == 3 then
snake = cc.Sprite:create("snakeBody.png")
end
记得设置snake的锚点和位置,使其正好在画出的方格中
layer:addChild(snake)
下面正式添加蛇头
local snake = require("Snake") ---Snake类-----
local snakeHead = snake:create(1) ----类型1为蛇头,详情见类Snake---
snakeHead.col = math.random(0,9) ---列数为从0-9中的随机数(因为一共就10行10列)--
snakeHead.row = math.random(0,9) --同上--
----设定位置,网格中每个小格都是60*60,这样设定可使蛇头刚好在小格中间,蛇身,食物同理----
snakeHead:setPosition(snakeHead.col*60,snakeHead.row*60)
bgc:addChild(snakeHead)
---4.添加食物 (同蛇头)
local food = require("Snake")
local snakeFood = food:create(2)
snakeFood.col = math.random(0,9)
snakeFood.row = math.random(0,9)
snakeFood:setPosition(snakeFood.col*60,snakeFood.row*60)
bgc:addChild(snakeFood)
---5.触摸,移动蛇头
local function onTouchBegan(touch,event)
-------触摸位置与蛇头位置之差的绝对值,abs为绝对值----------
local mx = math.abs(touch:getLocation().x - snakeHead.col*60)
local my = math.abs(touch:getLocation().y - snakeHead.row*60)
if my > mx then ----为上下移动,自己领悟,下同----
if touch:getLocation().y > snakeHead.row*60 then ----为向上移动,自己领悟,下同----
-----#allbody表示身体的长度,应和成绩一样在前面声明,local allbody = {},local snakeBody = nil------
if #allbody > 0
-----dir表示方向,参数1,2,3,4分别代表上,下,左,右-----
if snakeHead.dir == 2 then --这两句代码的意思是如果蛇身长度大于0,且方向为1,即向上,则遇到方向为2时,也就是向下时,跳出--
--意思是当有身体时,蛇不能反走,蛇向上走时,点击屏幕下方,蛇不往回走--
return
end
end
snakeHead.dir = 1 ---my>mx,且touch:getLocation().y>snakeHead.row*60时,规定方向dir=1,实为向上----
else
if #allbody > 0 then --向下走时,点击向上走无效--
if snakeHead.dir == 1 then
return
end
end
snakeHead.dir = 2 ---my>mx,且touch:getLocation().y<snakeHead.row*60时,规定方向dir=2,实为向下----
end
--这里只给出上下方向的,左右同理--
- Lua贪吃蛇开发笔记1
- Lua贪吃蛇开发笔记2
- Lua贪吃蛇开发笔记3
- JS贪吃蛇开发笔记1
- JS贪吃蛇开发笔记2
- JS贪吃蛇开发笔记3
- 传智播客学习笔记2--贪吃蛇1
- 贪吃蛇小游戏笔记
- 贪吃蛇笔记
- android-贪吃蛇开发
- cocos2d-x lua 贪吃蛇完整项目
- 贪吃蛇游戏笔记5
- js贪吃蛇学习笔记
- 贪吃蛇网络版(Java开发)
- Qt小游戏开发:贪吃蛇
- 如何开发贪吃蛇游戏
- Qt开发实例-贪吃蛇
- 学习1-js开发实现简单贪吃蛇游戏
- 【Android小游戏】安卓小游戏开发(手把手教学系列三)
- Python 书籍推荐
- live555开源RTSP流媒体解决方案说明
- 推荐本很棒的Android高阶知识的书
- Remove Duplicates from Sorted Array II
- Lua贪吃蛇开发笔记1
- java反射的简单例子
- 网络编程(2)--服务器模型
- 抛出异常
- Basic Calculator
- Java反射与线程的入门课
- c#在调用Process.Start方法时遇到的一个小问题
- 必修2?!!!!!!!!!!!!
- 【web前端】获取url中的参数