信息与计算科学0601王丹平060701024
return true; } /**
* 判断前后点击的是不是同一个点,i,j相同就是一个点 * p1之前的点 * p2当前所点的点 * true 相通,false 不通 */
private boolean isSameOne(ArrayPoint p1, ArrayPoint p2){ if (p1.i == p2.i && p1.j == p2.j){ } else
return true;
{
} } /**
* 带一个拐点的情况,但不比较值的大小是否相等 * p1之前的点 * p2当前所点的点 * true 相通,false 不通 */
public boolean oneConnerWithoutValue(ArrayPoint p1, ArrayPoint p2){ // 获取P1水平方向的拐点
ArrayPoint p1H = new ArrayPoint(p1.i, p2.j, map[p1.i][p2.j]);
return false;
19
信息与计算科学0601王丹平060701024
// 获取P1垂直方向的拐点
ArrayPoint p1V = new ArrayPoint(p2.i, p1.j, map[p2.i][p1.j]); if (horizonMatch(p1, p1H) && (p1H.value == 0)){ }
if (verticalMatch(p1, p1V) && (p1V.value == 0)){ }
return false; } /**
* 带一个拐点的情况 * p1之前的点 * p2当前所点的点 * true 相通,false 不通 */
public boolean oneConner(ArrayPoint p1, ArrayPoint p2){ // 获取P1水平方向的拐点
ArrayPoint p1H = new ArrayPoint(p1.i, p2.j, map[p1.i][p2.j]); // 获取P1垂直方向的拐点
ArrayPoint p1V = new ArrayPoint(p2.i, p1.j, map[p2.i][p1.j]); if (p1.value != p2.value){
if (horizonMatch(p1V, p2)){ }
return true;
if (this.verticalMatch(p1H, p2)){ }
return true;
20
信息与计算科学0601王丹平060701024
}
return false;
if (oneConnerWithoutValue(p1, p2)){ }
return false; } /**
* 带两个拐点的情况,分四个方向走,上下左右,只要一个方向通过,即通过 * p1初始点 * p2 结束点
* true 相通,false 不通 */
public boolean twoConner(ArrayPoint p1, ArrayPoint p2){ if (p1.value != p2.value){ }
int count = 0;
ArrayPoint temp = null; // 左
for (int col = p1.j - 1; col >= 0; col--){
temp = new ArrayPoint(p1.i, col, map[p1.i][col]);
if ((temp.value == 0) && this.oneLineWithoutValue(p1, temp)){
if (this.oneConnerWithoutValue(temp, p2)){ }
return true;
return false; return true;
21
信息与计算科学0601王丹平060701024
}
} else { }
break;
// 右
count = Settings.COLUMNS + 2 - p1.j;
for (int col = p1.j; col < Settings.COLUMNS + 2; col++){ } // 上
count = p1.i;
for (int row = count - 1; row >= 0; row--){ }
temp = new ArrayPoint(row, p1.j, map[row][p1.j]); if ((temp.value == 0) && oneLineWithoutValue(p1, temp)){ }
if (oneConnerWithoutValue(temp, p2)){ }
return true;
temp = new ArrayPoint(p1.i, col, map[p1.i][col]); if ((temp.value == 0) && oneLineWithoutValue(p1, temp)){ }
if (oneConnerWithoutValue(temp, p2)){ }
return true;
22
信息与计算科学0601王丹平060701024
// 下
for (int row = p1.i + 1; row < Settings.ROWS + 2; row++){ }
return false; } /**
* 判断两点是否匹配,包括直线,一个拐点,两个拐点三种情况 * p1初始点 * p2结束点
* true 相通,false 不通 */
public boolean match(ArrayPoint p1, ArrayPoint p2){ if (this.isSameOne(p1, p2)){ }
if (oneLine(p1, p2)){
map[p1.i][p1.j] = 0; map[p2.i][p2.j] = 0; LEFTCOUNT -= 2; return true; return false;
temp = new ArrayPoint(row, p1.j, map[row][p1.j]); if ((temp.value == 0) && oneLineWithoutValue(p1, temp)){ }
if (oneConnerWithoutValue(temp, p2)){ }
return true;
23