这里有更细致的版本:http://www.cocoachina.com/bbs/read.php?tid-284709.html
之前CocosStudio v2.0beta0版本里有个围住乖乖兔的示例教程:http://cn.cocos2d-x.org/tutorial/show?id=1651这里尝试用Cocos2d-lua 3.4beta + CocosStudio v2.1beta重新编辑并实现这个游戏的代码部分。
零、创建项目创建一个项目,使用lua语言。不多废话
一、界面
主界面比较简陋,主要是一个play按钮,懒得找背景图,就直接用游戏场景里边的背景图了。拼出来的界面树结构是这样的:
如图
游戏界面:
这部分界面跟http://cn.cocos2d-x.org/tutorial/show?id=1651这个教程的做法类似。 
主要区别:
1.兔子和石头的命名。
2.石头使用image控件实现。(控件自带有触摸的方法,处理触摸事件比较方便)
兔子的名字为“rabbit”。
石头的名字如下:
然后发布
二、
框架
目前Cocos2d-lua已经被quick团队接管,在原先基础上扩展了不少东西。上周末(15.01.11)下载的cocos2d-lua3.4beta中默认有一个捏虫子的小游戏。该游戏基于MVC框架。关于这个游戏这里有视频教程:http://cn.cocos2d-x.org/tutorial/show?id=2150里边有简单介绍这个MVC框架,我就不多废话了。这里我基于这个框架来编写这个游戏。
最终在app中的文件结构如上。删除其他lua文件,添加了个GameLogital.lua来进行逻辑编码。第一次用quick框架,可能有些用不对的地方,还望指出。
三、代码:
MainScene.lua中: 
这里用到addTouchEventListener设置回调函数,设置的回调函数会回传两个参数:sender和evt,其中sender是被触发事件的对象,evt是当前事件的类型。一次触摸是会触发多次这个函数的,但是会用evt来标记当前值,我们需要根据不同的值进行相应的处理。这里判断evt的值,当这个值为2,即玩家的手离开触摸屏时,调用enterScene进入PlayScene页面。(这里遇到个问题,ccui.TouchEventType 没有正确加载,因而这里没有用枚举值)
enterScene是lua框架里边的东西,按字符串索引MVC框架里边的View模块,然后用View替换当前场景。

在现在的lua框架下(擦,我变成在介绍lua框架了?!)进入时View对象时首先会调用onCreate。所以这里作为View的入口再合适不过。这里同MainScene一样先加载csb文件,然后初始化逻辑和界面。
*原生的2d-x节点挂载进界面时会调onEnter,退出界面时会调onExit。Lua下我们也可以用setOnEnterCallback / setOnExitCallback监听这两个值来做处理。
*
在PlayScene中:
我提供了两个方便获取兔子和石头的方法:

对于设置对象的显示
这里用的是setOpacity及透明度。因为要监听对象的触摸事件,对象不显示的情况下,监听不到事件。(不要太在意obj变量这个细节,之前调试的时候改的。)
设置小兔子的位置:
石头的初始化
CCS中石头是使用setVisible隐藏的,这里修正为Opacity,为了得到触摸事件。(好吧其实就是为了给你们提个醒)
结算界面
结算界面播放动画,在PlayScene.csb文件里边,有一个结算界面渐显的动画,在上边已经加载了。要获取这个动画需要用getActionByTag(root的tag)来获取。然后调用gotoFrameAndPlay来播放。
游戏逻辑
路径方面,是从兔子周围一层一层往外搜,找到所有最短路径,标记这些路径的出发位置,随机选取一个。
关于GameLogital就不多介绍了。源码里边已经给了不少注释,自己看吧。
源码下载地址:
http://share.weiyun.com/50653453f68acc115f05a9244439cedb

支持