用Quick Cocos2dx做一个连连看(二)

今天完成了以下内容:

1 成对生成SpriteItem

2 重排接口制作完成

3 SpriteItem的选择逻辑

主要代码如下:

 1 function MainScene:onEnter()
 2     local item
 3     local item0
 4     local temptype = 1
 5     for i=1,32 do
 6         temptype = math.floor(math.random(0,10))
 7         item = SpriteItem.new()
 8         item:setData(temptype)
 9         item:addTo(self.layer)
10         item:setName(string.format("item%d", i))
11         self.items[i] = item
12         item:setPos(math.floor((i-1)%row),math.floor((i-1)/row))
13
14         item0 = SpriteItem.new()
15         item0:setData(temptype)
16         item0:addTo(self.layer)
17         self.items[i+32] = item0
18         item0:setName(string.format("item%d", i+32))
19         item0:setPos(math.floor((i+31)%row),math.floor((i+31)/row))
20     end
21
22     self:shuffle(self.items)
23
24     self.layer:addNodeEventListener(cc.NODE_TOUCH_EVENT, handler(self, self.onTouched))
25     self.layer:setTouchEnabled(true)
26 end

顺序重排的方法:

 1 function MainScene:shuffle(t)
 2     local  len = #t
 3     for i=1,len*2 do
 4         local a = math.floor(math.random(len))
 5         local b = math.floor(math.random(len))
 6
 7         if a ~= b then
 8             t[a],t[b] = t[b],t[a]
 9             t[a]:setPos(math.floor((a-1)%row),math.floor((a-1)/row))
10             t[b]:setPos(math.floor((b-1)%row),math.floor((b-1)/row))
11             --printInfo("swap item %d : %d", a,b)
12         end
13     end
14     --[[i = 1
15     for i=1,len do
16         print(t[i]:getName())
17     end]]
18 end

选择逻辑:根据屏幕上的坐标点取得对应的SpriteItem

 1 function MainScene:getItem( posx, posy )
 2     --printInfo("getItem %d : %d", posx, posy)
 3
 4     local px = math.round((posx - startX)/50)
 5     local py = math.round((posy-startY)/50)
 6     if px > 8 or py > 8 then
 7         return
 8     end
 9     local index = row * py + px + 1
10     local item = self.items[index]
11
12     return item
13 end

当前效果图如下:

时间: 2024-10-19 09:00:09

用Quick Cocos2dx做一个连连看(二)的相关文章

用Quick Cocos2dx做一个连连看(一)

呵呵,不知道能不能坚持下来,先写着吧. 预备知识:Quick Cocos2dx 2.2.5基本知识 或者 Cocos2dx基本知识, lua入门 开发工具:Sublime Text 2.0/3.0 原型设计:Balsamiq Mockups 我们的效果图大概是这样子的: 可见,我们需要将连连看的元素抽出来作为一个类,这个类肯定是一个显示对象来的,我们给这个类设入一个类型值,就可以自动的刷新图片,设入行与列就可以自动的刷新其位置. 这个类如下: 1 local SpriteItem = class

用Quick Cocos2dx做一个连连看(三)

做个日记吧. 最近比较忙,斗志也不高,昨天有点时间了,开始做了一下连接方法,一开始用的搜索算法,但是bug比较多,究其原因是对语法和算法都不是很熟悉. 然后昨天下午利用点时间用稍微通俗一点的连接算法,目前直连和一个弯的都完成了,两个弯的在制作中,当前进度如下: 写这篇日志的目的在告诉自己要完成2015年计划上的第一个计划,也就是这个demo. 2015-01-08 16:47 嗯,刚才测试了两个拐角的连接,也已经完成了. 剩下的只是一些流程和显示润色了. 代码地址:https://github.

笔记:利用Cocos2dx 3.3 lua 做一个动作类游戏(一)

在这之前,声明一下: 做不完我是小狗. 没办法,没毅力和恒心,之前的那个Quick Cocos2dx做的横版过关游戏的demo已经转成了3.3的版本了,其实也算是个半成品,战斗,UI啥的都有了,呵呵. 本次DEMO要达成的目的如下: 1 熟悉Cocos2dx 3.3 - lua 2 使用Joystick 3 完成简单的怪物AI 4 尝试扩展现有的api(可选) 嗯,差不多就以上了. 今天第一次笔记. 当前完成的任务有如下: 1 使用新的player新建项目 2 在场景中添加Sprite以及其帧动

使用Cocos2d-X实现一个小游戏PhotoExhibition

最近也不知道怎么了,总想用Cocos2d-X做一个比较好的东西,想想也是,学习Cocos2d-X快一个月了,也该做个东西练练手了,最近总用手机拍照,看照片,忽然想做一款与图片相关的小游戏,游戏非常简单打开后会显示一个界面,界面上有三个按钮(实际上是使用精灵创建的菜单项) 点击按钮后可以进入相关的场景中(例如点击校园后进入校园创建) 通过鼠标的拖拽可以查看校园场景的图片 如果再看其它创建的图片可以通过点击右下角返回程序主界面 工程文件结构 文件解析: MenuScene.h/MenuScene.c

做一个懒COCOS2D-X程序猿(一)停止手打所有cpp文件到android.mk

前言:"懒"在这里当然不是贬义词,而是追求高效,拒绝重复劳动的代名词!做一个懒COCOS2D-X程序猿的系列文章将教会大家在工作中如何偷懒,文章篇幅大多较短,有的甚至只是几行代码,争取把懒发挥到极致! 一.懒人说书 Android.mk中LOCAL_SRC_FILES需要罗列出所有参与编译的文件,这样在.cpp文件少的时候还可以一个一个添加,当有几百个文件的时候会十分的痛苦! 我们下看看TestCpp工程中的Android.mk文件: 这只是节选的一部分,大概只有50个左右吧,除数量多

一个无锁消息队列引发的血案:怎样做一个真正的程序员?(二)——月:自旋锁

前续 一个无锁消息队列引发的血案:怎样做一个真正的程序员?(一)——地:起因 一个无锁消息队列引发的血案:怎样做一个真正的程序员?(二)——月:自旋锁 平行时空 在复制好上面那一行我就先停下来了,算是先占了个位置,虽然我知道大概要怎么写,不过感觉还是很乱. 我突然想到,既然那么纠结,那么混乱,那么不知所措,我们不如换个视角.记得高中时看过的为数不多的长篇小说<穆斯林的葬礼>,作者是:霍达(女),故事描写了两个发生在不同时代.有着不同的内容却又交错扭结的爱情悲剧,一个是“玉”的故事,一个是“月”

30分钟做一个二维码名片应用,有源码!

前言 30分钟带你用Wex5做一个微信公众号上使用的二维码名片,相应技术点有详细讲解,高清有码!(点击下载全部源码) 二维码现在是无处不在,无孔不入了.大到一辆汽车,小到一包纸巾,身上都印有二维码,明码标价.败家娘们可能会说:没想过要买的,真心的!就是看着漂亮嘛,想拍个照片,谁知道一拍就弹出个支付界面,想按退出但是手抖...(这手抖的,不知道放在菜刀下会不会稳定一点?)    作为个人信息的载体,名片也是天然适合二维码这种形式的.今天小茄就试着用WeX5移动开发工具做一个电子的二维码名片,除了扫

JavaScript 通过循环按执行顺序,做一个5&#215;5的二维数组,赋1到25的自然数,然后输出该数组的左下半三角。

通过循环按执行顺序,做一个5×5的二维数组,赋1到25的自然数,然后输出该数组的左下半三角.试编程. 基本思路: 1 var container_arr = []; 2 // 建立五个数组 3 for(var i = 0,count = 0 ; i < 5; i++){ 4 var arr = []; 5 for(var k = 0 ; k < 5 ; k ++){ 6 // 这个内层循环会执行 5 * 5 次 7 count ++; //count会从1 ~ 25 8 arr.push(co

使用Multiplayer Networking做一个简单的多人游戏例子-2/3(Unity3D开发之二十六)

猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51007512 使用Multiplayer Networking做一个简单的多人游戏例子-1/3 使用Multiplayer Networking做一个简单的多人游戏例子-2/3 使用Multiplayer Networking做一个简单的多人游戏例子-3/3 7. 在网络中控制Player移动 上一篇中,玩家操