对于连连看重判断能否连接的问题主要考虑三种情况
1、连接时没有拐点,此时又分为横向和纵向
2、连接时有一个拐点的情况
3、连接时有两个拐点的情况,这也是本游戏中最难的部分了
首先我们来看看没有拐点的情况
//判断水平方向上 public boolean isHorizontal() { //用来记录那个数大,那个数小 int bigNumX = 0; int smallNumX = 0; //首先判断水平线上的 if(lastClick[1] == curClick[1]) { if(lastClick[0] > curClick[0]) { bigNumX=lastClick[0]; smallNumX=curClick[0]; } else if(lastClick[0] < curClick[0]) { bigNumX=curClick[0]; smallNumX=lastClick[0]; } //相邻的情况 if(smallNumX+1 == bigNumX) { return true; } else//不是相邻的情况 { for(int i=smallNumX+1;i<=bigNumX;i++) { if(pieces[i][lastClick[1]] == 1)//如果两个方块之间有方块 return false; else return true; } } } return false; } //判断竖直方向上 public boolean isVertical() { int bigNumY = 0; int smallNumY = 0; if(lastClick[1] > curClick[1]) { bigNumY=lastClick[1]; smallNumY=curClick[1]; } else if(lastClick[1] < curClick[1]) { bigNumY=curClick[1]; smallNumY=lastClick[1]; } //相邻的情况 if(smallNumY+1 == bigNumY) { return true; } else { for(int i=smallNumY+1;i<bigNumY;i++) { if(pieces[lastClick[0]][i] == 1)//如果两个方块之间有方块 return false; else return true; } } return false; }