求五子棋获胜的算法
2024-07-16 11:17:22作者:饭克斯
这是我写过的检测状态的一个函数,可能不是很好,不过还是可以用的:
privatevoidcheckGameStatus()
{
inti,j;
booleannoLeft=true;
for(i=0;i<rows;i++)
for(j=0;j<cols;j++)
{
if(noLeft&&metrix[i][j]==0)
noLeft=false;
if(metrix[i][j]!=0)
{
intdif;
//left
for(dif=1;dif<5;dif++)
{
if(j-dif==-1||metrix[i][j-dif]!=metrix[i][j])
break;
}
if(dif==5)
{
_status=metrix[i][j];
return;
}
//right
for(dif=1;dif<5;dif++)
{
if(j+dif==cols||metrix[i][j+dif]!=metrix[i][j])
break;
}
if(dif==5)
{
_status=metrix[i][j];
return;
}
//south
for(dif=1;dif<5;dif++)
{
if(i+dif==rows||metrix[i+dif][j]!=metrix[i][j])
break;
}
if(dif==5)
{
_status=metrix[i][j];
return;
}
//west-south
for(dif=1;dif<5;dif++)
{
if(j-dif==-1||i+dif==rows||metrix[i+dif][j-dif]!=metrix[i][j])
break;
}
if(dif==5)
{
_status=metrix[i][j];
return;
}
//est-south
for(dif=1;dif<5;dif++)
{
if(j+dif==cols||i+dif==rows||metrix[i+dif][j+dif]!=metrix[i][j])
break;
}
if(dif==5)
{
_status=metrix[i][j];
return;
}
}
}
if(noLeft)
_status=this.STAT_STANDOFF;
}