天天看點

QQ連連看外挂核心算法(檢測點對點)

bool  CheckLine (POINT p1,POINT p2)
{
    int x,y,t;
    //如果x軸相同      如果y軸相同         有一點為空               另一點為空
    if ((p1.x==p2.x)&&(p1.y==p2.y)&&(chessdata[p1.y][p1.x]==0)&&(chessdata[p2.y][p2.x]==0)) 
             {return turn;}
   //        如果p1軸小于0   大于18                          或   p2軸小于0  大于18
    else if((p1.x<0) || (p1.x>18) || (p1.y<0) || (p1.y>10) ||  (p2.x<0) || (p2.x>18) || (p2.y<0) || (p2.y>10))
             {return false;}
   if(p1.x==p2.x)  //如果一點與另一點X軸相同
           {
   if(p1.y>p2.y)                 //如果一高一低,(如果判斷的棋子到了下方,結果上方有一樣的,就接着從上面的棋子開始判斷)
                     {t=p1.y;p1.y=p2.y;p2.y=t;}   //交換p1和p2的y值
                                                //如果上述未成立,就執行下面
                  for(y=p1.y;y<=p2.y;y++)       //X軸相同就周遊y軸,也就是p1的下方是否有棋子擋道
                  {
                     if(chessdata[y][p1.x]!=0){return false;}//如果p1下方有東西,就沒法直連
                  }
            }
  if(p1.y==p2.y)   //如果p1與p2Y軸相同
           {
   if(p1.x>p2.x)                 //如果一前一後,(如果判斷的棋子的後方,結果前方有一樣的,就接着從前方開始判斷)
                     {t=p1.x;p1.x=p2.x;p2.x=t;}
                  for(x=p1.x;x<p2.x;x++)        //向後周遊x軸,就是判斷p1後方是否有棋子擋道
                  {
                      if(chessdata[p1.y][x]!=0){return false;}    //如果p1後方有東西就不能直連
                   }
            }
return true;    //如果能執行到此步驟,絕對可以直接連接配接了(一條線的)
}