对于连连看重判断能否连接的问题主要考虑三种情况
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;
}