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

转载于:https://www.cnblogs.com/rogee/archive/2011/01/31/1948464.html

猜你喜欢

转载自blog.csdn.net/weixin_34319111/article/details/94681153