1,游戏开始逻辑:
—-两个二维数组,一个用于存储显示精灵,一个用于存储显示数据(图片路径中的数字部分)。
—-游戏能够正常开始的标准:不存在三消块,也不能为死局。
即保存显示数据的数组中,不能够存在相邻三个位置的数据一样的情况–A,也不能出现交换后也无法形成三消的情况–B。
确定图片类型总数N,然后将显示数据的数组中的每一个元素赋值为一个0-N之间的随机数。
先检测生成的这一组数据是否存在情况A,如果有就刷新不合格位置的数据,然后重新检测。
如果情况A不存在,就检查情况B,如果存在情况B就刷新所有数据,然后重新检测。
ctor: function () {
this._super();
//var gradient = new cc.LayerGradient(cc.color(0,0,0,255),cc.color(0,255,0,255),cc.p(1,1)); //创建渐进色背景层
var background = new cc.Sprite("res/timg.jpg");
background.attr({anchorX:0, anchorY:0});
this.addChild(background);
var _size = cc.winSize;
this.shard_width = (new cc.Sprite(res.icon_1)).width;
var basePoint = cc.p((_size.width - this.shard_width *SHARD_NUM_W + this.shard_width )/2,
(_size.height + this.shard_width *SHARD_NUM_H - this.shard_width )/2);
this.shard_date_arr = Creat2X2Arr(SHARD_NUM_W, SHARD_NUM_H, 1);
this.shard_sprite_arr = Creat2X2Arr(SHARD_NUM_W, SHARD_NUM_H, 0);
for(var i=0;i<SHARD_NUM_W;i++)
{
for(var j=0;j<SHARD_NUM_H;j++)
{
var shard = new Shard();
shard.setPosition(basePoint.x + i * this.shard_width, basePoint.y - j * this.shard_width);
//shard.setArrIndex(i, j);
this.addChild(shard);
this.shard_sprite_arr[i][j] = shard;
this.shard_date_arr[i][j] = parseInt(Math.random()*SHARD_TYPE + 1);
}
}
this.buildWithout3Arr();
cc.eventManager.addCustomListener(USER_CLICK_SHARD_EVENT, this._getTouchOneShard.bind(this));
},
//创建一个不存在三消的数组
buildWithout3Arr:function()
{
var returnArr = this.checkArrHas3(this.shard_date_arr);
if(returnArr.length > 0)
{
for(var index in returnArr)
{
var randomPo = returnArr[index];
this.shard_date_arr[randomPo.x][randomPo.y] = parseInt(Math.random()*SHARD_TYPE + 1)
}
this.buildWith