/ThreeEliminate

三消算法

Primary LanguageLua

ThreeEliminate

三消算法

用法

  1. 每一个数字代表一个元素,先生成元素阵列

    var game = new DigitalGame(5,5,[0.35,0.65, 0.85, 0.95, 1])

    [3, 2, 3, 4, 4]
    [3, 2, 4, 3, 3]
    [5, 4, 2, 5, 4]
    [1, 2, 3, 2, 2]
    [3, 1, 1, 3, 1]

  2. 将第五行第一列元素置成1,以符合消除的规则
    game.numMap[4][0]=1

    [3, 2, 3, 4, 4]
    [3, 2, 4, 3, 3]
    [5, 4, 2, 5, 4]
    [1, 2, 3, 2, 2]
    [1, 1, 1, 3, 1]

  3. 执行消除检测,返回结果
    game.check()

    {  
        actions: [ 
            [2, 0, 3, 0],  
            [1, 0, 2, 0],  
            [0, 0, 1, 0],  
            [-1, 0, 0, 0, 1],  
            [3, 1, 4, 1],  
            [2, 1, 3, 1],  
            [1, 1, 2, 1],  
            [0, 1, 1, 1],  
            [-1, 1, 0, 1, 2],  
            [3, 2, 4, 2],  
            [2, 2, 3, 2],  
            [1, 2, 2, 2],  
            [0, 2, 1, 2],  
            [-1, 2, 0, 2, 2] ],
        bClear: true,  
        clears: [[3, 0, 1],  
            [4, 0, 1],  
            [4, 1, 1],  
            [4, 2, 1]],  
        map: [  
            [1, 2, 2, 4, 4],  
            [3, 2, 3, 3, 3],  
            [3, 2, 4, 5, 4],  
            [5, 4, 2, 2, 2],  
            [2, 2, 3, 3, 1]]  
        mergePoints: [[4, 0, 1, 2]]  
    }  
    
    字段 含义
    actions 动作列表,[2, 0, 3, 0]表示从第三行第一列移动到第四行第一列
    bClear 是否消除了元素
    clears 消除元素列表,[3, 0, 1]表示消除第四行第一列元素,元素值是1
    map 最终的元素阵列
    mergePoints 合并元素的位置,[4, 0, 1, 2]表示消除合并在第五行第一列,值由1变成2。如果消除了不用合并,没有这个字段。

待实现

  1.   用0表示障碍物元素

  2.   斜落算法

  3.   生成指定的元素