對於連連看重判斷能否串連的問題主要考慮三種情況
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;}