分享一个小游戏的编写历程,内容还是有不少的,我就分开来写了哈。使用的是cocos2d-js引擎,观看此教程要有一点基础会比较容易的,这个小游戏参照了*1010!*这个游戏了。

这是一个拖拽类游戏,拖拽元素使用的是类俄罗斯方块。

github地址:https://github.com/lzuntalented/DragBlock (opens new window) github上的内容只更新到当前教程的内容 演示地址:https://lzuntalented.github.io/lz/1010/publish/html5/index.html (opens new window) 演示项目中还存在一些问题,在后面教程会对此进行修复的

演示图片:

步骤: 1.创建网格背景,将这个网格放置到视图的正中心位置上。 2.默认每个网格是灰色的背景,后面方块精灵会覆盖在网格上面。为了记住这个状态,需要把网格使用一个二维数组保存下每个网格点的状态,0表示未覆盖可用,1表示该点已被使用。

/**
* 创建网格背景
* */
createGridView : function(){
    
    var x_offset = (cc.winSize.width - PublicData.item_width * PublicData.gridview_col) / 2;
    var y_offset = (cc.winSize.height - PublicData.item_height * PublicData.gridview_row) / 2 + PublicData.item_height;
    
    for(var i = 0 ; i < PublicData.gridview_row ; i++){
        var tmp = [];

        for(var j = 0  ; j < PublicData.gridview_col ; j++){
            tmp.push(0);//填充状态0网格未被覆盖 1该网格已被覆盖
            
            var sprite = new cc.Sprite(res.Color_0_png);
            sprite.attr({
                x : PublicData.item_width * j + x_offset,
                y : PublicData.item_height * i + y_offset,
                anchorX : 0,
                anchorY : 1
            });
            this.addChild(sprite);
        }
        
        this.map.push(tmp);//填充状态数组

    }
},

3.创建底部三个可供拖拽的方块精灵。方块精灵需要有一些属性:类型表示这个是哪种方块,方块方向,还要定义一个方块的数据结构,以便后面在消除的时候方便计算。此数据结构以左上角为原点 , 用坐标系的第四象限表示。

/**
* 绘制方块
* ##
* ##
*/
drawTian : function(){
    /*绘制田方块的各个点*/
    this.drawPoint();
    this.drawPoint(
        cc.p(PublicData.item_width,0)
    );
    this.drawPoint(
        cc.p(0,-PublicData.item_height)
    );
    this.drawPoint(
        cc.p(PublicData.item_width , -PublicData.item_height)
    );
    
    this.width = PublicData.item_width * 2;//定义该方块宽度
    this.height = PublicData.item_height * 2;//定义该方块高度
    
    /*定义该方块的数据结构*/
    this.vector.push([0,0]);
    this.vector.push([0,1]);
    this.vector.push([-1,0]);
    this.vector.push([-1,1]);
},
	

先写到这,把基本框架先搭出来,后面再慢慢补充哈! 打个广告,喜欢的就点下关注哟!