连连看API版本的源代码[3]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

 //如果相邻
 if( ( p1.x+1==p2.x && p1.y==p2.y )
  || ( p1.x==p2.x && p1.y+1==p2.y )
  || ( p1.x-1==p2.x && p1.y==p2.y )
  || ( p1.x==p2.x && p1.y-1==p2.y ) )
 {
  //把路径记录下来
  //起点
  way[0].x=p1.x;
  way[0].y=p1.y;
  //直线转折点为0
  way[1].x=0;
  way[1].y=0;
  way[2].x=0;
  way[2].y=0;
  //终点
  way[3].x=p2.x;
  way[3].y=p2.y;

  return true;
 }

 //直线连通
 //如果在水平方向上
 if( p1.x==p2.x )
 {
  if(p1.y>p2.y)
  {
   temp=p1.y;
   p1.y=p2.y;
   p2.y=temp;
  }

  for(j=p1.y+1; j<p2.y; j++ )
  {
   if( matrix[p1.x][j]!=0)
   {
    break;
   }
  }

  //如果两点之间相通
  if(j==p2.y &&  matrix[p1.x][j-1]==0 )
  {
   
   //把路径记录下来
   //起点
   way[0].x=p1.x;
   way[0].y=p1.y;
   //直线转折点为0
   way[1].x=0;
   way[1].y=0;
   way[2].x=0;
   way[2].y=0;
   //终点
   way[3].x=p2.x;
   way[3].y=p2.y;

   return true;
  }
 }

 //如果在垂直方向上
 if( p1.y==p2.y )
 {
  if(p1.x>p2.x)
  {
   temp=p1.x;
   p1.x=p2.x;
   p2.x=temp;
  }

  for(i=p1.x+1; i<p2.x; i++ )
  {
   if( matrix[i][p1.y]!=0)
   {
    break;
   }
  }
  //如果两点之间相通
  if(i==p2.x &&  matrix[i-1][p1.y]==0 )
  {


   //把路径记录下来
   //起点
   way[0].x=p1.x;
   way[0].y=p1.y;
   //直线转折点为0
   way[1].x=0;
   way[1].y=0;
   way[2].x=0;
   way[2].y=0;
   //终点
   way[3].x=p2.x;
   way[3].y=p2.y;

   return true;
  }
 }


 
 //折线连通
 /*if( p1.x!=p2.x && p1.y!=p2.y)
 {*/
  if(p1.y>p2.y)
  {
   //两点交换
   temp=p1.x;
   p1.x=p2.x;
   p2.x=temp;

   temp=p1.y;
   p1.y=p2.y;
   p2.y=temp;


  }

 
 //横向扫描
 for(i=0;i<=M-1;i++)
 {  
  x_across=true;

  //是否水平连通
  for(j=p1.y+1; j<=p2.y-1; j++ )
  {
   if(matrix[i][j]!=0 )
   {
    x_across=false;
    break;
   }
  }

  if(matrix[i][p1.y]!=0  )
  {
   if( i!=p1.x )
    x_across=false;
  }
  if(matrix[i][p2.y]!=0  )
  {
   if( i!=p2.x )
    x_across=false;
  } 
   
  if(x_across)
  {//水平连通才执行下面
  /* for(j=1; j<N-2; j++ )
   {*/
    //检验在垂直上是否连通

   px1=px2=i;
   py1=p1.y;
   py2=p2.y;
   while( px1!=p1.x || px2!=p2.x )
   {
    //如果当前点不空且不为p1点,就跳出循环,从下一行开始检测
    if( matrix[px1][py1]!=0 && (px1!=p1.x || py1!=p1.y) )
     break;

    //如果当前点不空且不为p2点,就跳出循环,从下一行开始检测
    if( matrix[px2][py2]!=0 && (px2!=p2.x || py2!=p2.y) )
     break;

本文关键:连连看API版本的源代码
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top