在学习三消游戏的时候,第一件事情就是给所有的图片都显示在多少行多少列的矩阵中。
先在类外写一个全局的变量;固定好游戏的行数和列数
var GAMEDATA = { LINE:8, LIST:8, }1234
这样就在每次使用的时候就方便自己管理一些数据。然后就是实现一个矩阵
for(var i=0;i<GAMEDATA.LINE;i++){ for(var j=0;j<GAMEDATA.LIST;j++){ var sp = new cell(); this.addChild(sp) sp.labels(i,j) sp.setPosition(50+i*40,cc.winSize.height-40-j*40) this.spArr[i][j] = sp //this.spArr.push(sp) //cc.log(this.spArr.toString) } }123456789101112
这里就是创建一个矩阵。并且给所有的图片按随机出现的规律显示在矩阵中。其中新建的cell类中就是添加随机出现的图片,代码如下:
this.type = parseInt(1+Math.random()*5); this.initWithFile("res/pic_"+this.type+".png");12
就是项目文件里面存了有一定命名规律的五章不同的图片。然后设置一个全局的变量使得他为1到5之间的随机数。然后在给这五张图片随机的显示在矩阵中。当然要注意设置每张图片的坐标。
sp.setPosition(50+i*40,cc.winSize.height-40-j*40)1
添加了图片之后就要实现一个点击消除的效果。这里当然要用到点击事件。当点击的块就被移除掉。记实现了点击消除的效果。
//点击事件 var that = this; var listener = cc.EventListener.create({ event:cc.EventListener.TOUCH_ONE_BY_ONE, swallowTouches:true, onTouchBegan:function(touch, event){ var target = event.getCurrentTarget(); var locationInNode = target.convertToNodeSpace(touch.getLocation()); var s = target.getContentSize(); var rect = cc.rect(0,0, s.width, s.height); if(cc.rectContainsPoint(rect, locationInNode)){ that.removeFromParent(true) cc.eventManager.dispatchCustomEvent(GANMEUSER.USER_TOUCH_EVENT,that.primary) return true; } return false; } }); cc.eventManager.addListener(listener, this);
12345678910111213141516171819上面就是点击消除的效果。接下来就是要实现的就是点击之后使块能够往下移动,并且下移的过程中改变上面所有图片的下标。
首先的给每个图片都添加下标。
先在cell类里面写一个方法给每个图片都设置i跟j的值,并且在一开始就用一个全局变量保存起所有i跟j的坐标
labels:function(i,j){ this.primary = cc.p(i,j) this.lable =new cc.LabelTTF(i+"."+j,'',10) this.lable.enableStroke(cc.color(0,0,0,255),1) this.lable.setPosition(10,10) this.addChild(this.lable) }1234567
然后在app类面调用这个方法并且传入i跟j 的值
var sp = new cell(); this.addChild(sp) sp.labels(i,j)123
点击下移就的在点击消除的位置添加一个自定义事件,并且抛出当前点击的i跟j的坐标。也就是之前创建label方法之前保存的全局变量。在app类里面接收这个传过来的值判断点了之后上面的所有块都要往下落。代码如下 :
cc.eventManager.addCustomListener(GANMEUSER.USER_TOUCH_EVENT,this.cheskTouch.bind(this));1
这是自定义事件的接收方法,this.cheskTouch的回调方法如下:
cheskTouch:function(event){ var data =event.getUserData(); cc.log(data.x,data.y) var i = data.x for(var j=data.y-1;j>=0;j--){ if(this.spArr[i][j] == null){ cc.log(i,j) continue } this.spArr[i][j].fallDown(); var updataMoveend = this.spArr[i][j].primary this.spArr[updataMoveend.x][updataMoveend.y] = this.spArr[i][j] this.spArr[i][j] = null; }1234567891011121314
其中fallDown方法是在cell类里面写的一个移动的方法。代码很简单,就是点击消除的之后使得上面的每一个图片都向下移动一个图片的高度的像素。并且给this.primary = cc.p(i,j)
的y坐标都++。这样就可以实现每次点击之后上面的图片下落。并且下标也改变的效果。
其中应该注意的问题:必须先创建一个二维的数组。并且给所有的图片存在数组里面。这样才能使用自定义事件的回调函数,
还要的就是给每次改变之后的this.primary = cc.p(i,j)的y坐标都要显示到文本框中,这样才能看到改变的值。
相关知识
揭秘PHP三消游戏:轻松掌握核心算法与实战技巧
开发三消游戏大概要多少费用?
代号三消游戏下载
【Unity 三消游戏框架插件】Puzzle Match Kit 帮助快速创建和开发经典的三消类游戏(Match
三消游戏大全 最新三消游戏盘点
三消游戏有哪些好玩 十大必玩三消游戏排行
超高人气三消游戏推荐
最受欢迎三消游戏推荐
三消游戏大全 热门三消游戏排行
三消游戏有哪些 热门三消游戏排行榜
网址: 三消游戏开发实战 https://m.huajiangbk.com/newsview1924016.html
上一篇: 经典三消领红包类的游戏合集 |
下一篇: 三消游戏排行榜,热门三消游戏的比 |