首页 > 代码库 > 用Quick Cocos2dx做一个连连看(二)
用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] = item12 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] = item018 item0:setName(string.format("item%d", i+32))19 item0:setPos(math.floor((i+31)%row),math.floor((i+31)/row))20 end21 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 end13 end14 --[[i = 115 for i=1,len do16 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 + 110 local item = self.items[index]11 12 return item13 end
当前效果图如下:
用Quick Cocos2dx做一个连连看(二)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。