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;    //如果能执行到此步骤,绝对可以直接连接了(一条线的)

}

你可能感兴趣的:(连连看)