最近搜索

第14讲 检查胜利2 让管理器 controller计算是否符合

浏览:490
管理员 2021-09-09 16:23


puzzle_date_controller.js 中添加方法  getIsSuccess(list);

image.png

    that.getIsSuccess = function (list) {
        for (let i = 0; i < 2; i++) {
            for (let j = 0; j < 3; j++) {
                //首先看一下,上下左右边缘是否都 是mid
                let map = list[i * 3 + j];
                //上
                if (i === 1) {
                    if (map[defines.DirectionMap.UP] !== defines.PuzzleLineValue.MID) {
                        //只要不等于 中间 就直接返回 false
                        return false;
                    }
                }
                //下
                if (i === 0) {
                    if (map[defines.DirectionMap.DOWN] !== defines.PuzzleLineValue.MID) {
                        //只要不等于 中间 就直接返回 false
                        return false;
                    }
                }
                //左
                if (j === 0) {
                    if (map[defines.DirectionMap.LEFT] !== defines.PuzzleLineValue.MID) {
                        //只要不等于 中间 就直接返回 false
                        return false;
                    }
                }
                //右
                if (j === 2) {
                    if (map[defines.DirectionMap.RIGHT] !== defines.PuzzleLineValue.MID) {
                        //只要不等于 中间 就直接返回 false
                        return false;
                    }
                }
                //然后计算中间的  左右相加 等于 0
                if(j<2){
                    //跟创建地图的算法类似
                    let nextMap = list[ i  * 3 + j + 1];
                    if(map[defines.DirectionMap.RIGHT] + nextMap[defines.DirectionMap.LEFT] !==0){
                         //相邻的值加起来要等于 0  知道边缘的宏定义 的三个值要相加等于0了吧。
                         //只在左右相加不等于 0 
                         return false;
                    }
                }
                //上下相加等于 0
                if(i < 1){
                    let nextMap = list[(i+1)*3+j];
                    if(map[defines.DirectionMap.UP] + nextMap[defines.DirectionMap.DOWN] !==0){
                        return false;
                    }
                }
            }
        }
        //所有情况都考虑到,最终得到真值。
        return true;
    };




image.png

联系站长

站长微信:xiaomao0055

站长QQ:14496453