空白连通域鉴定/点击空白方块
接上文实现了大部分扫雷的初始化算法,下面要实现的是查找数组中相邻的0值域,以在点击时进行展开0值区。
这里需要初始化一个emptyMap二维数组以记录算法所查找到的零值域,同时可以记录哪些区域被展开过。
//连通判定,展开空白区
//不寻找斜角联通
_linkEmpty: function _linkEmpty(numX, numY) {
//四向寻值
try {
//阻止扩展数组操作,剪枝
/*if(numX != 17 && numY == 17) {
this._checkEmpty(numX + 1, numY);
this._checkEmpty(numX + 1, numY - 1);
}
if(numY != 17 && numX == 17) {
this._checkEmpty(numX, numY + 1);
this._checkEmpty(numX - 1, numY + 1);
}
if(numY != 17 && numX != 17) {
this._checkEmpty(numX, numY + 1);
this._checkEmpty(numX - 1, numY + 1);
this._checkEmpty(numX + 1, numY);
this._checkEmpty(numX + 1, numY - 1);
this._checkEmpty(numX + 1, numY + 1);
}
this._checkEmpty(numX - 1, numY);
this._checkEmpty(numX - 1, numY - 1);
this._checkEmpty(numX, numY - 1);
if(numX != 17 && numY == 17 && numY != 0) {
this._checkEmpty(numX + 1, numY);
this._checkEmpty(numX - 1, numY);
this._checkEmpty(numX, numY - 1);
} else if(numX == 17 && numY != 17 && numY != 0) {
this._checkEmpty(numX - 1, numY);
this._checkEmpty(numX, numY - 1);
this._checkEmpty(numX, numY + 1);
} else if(numX != 17 && numY != 17 && numX != 0 && numY != 0) {
this._checkEmpty(numX - 1, numY);
this._checkEmpty(numX + 1, numY);
this._checkEmpty(numX, numY - 1);
this._checkEmpty(numX, numY + 1);
} else if(numX != 17 && numX != 0 && numY == 0) {
this._checkEmpty(numX - 1, numY);
this._checkEmpty(numX + 1, numY);
this._checkEmpty(numX, numY + 1);
}*/
if(numX < 17) {
this._checkEmpty(numX + 1, numY);
}
if(numY &l