#define MAX_ROW 15
int Map[MAX_LINE][MAX_ROW];
int CheckWin() //返回0表示都沒贏,返回1表示白棋贏,返回2表示黑棋贏
{
int i,j,k;
int tmp;
/* 判斷所有橫行 */
for(i=0;i<MAX_LINE;i++)
{
for(j=0;j<MAX_ROW-5;j++)
{
tmp=Map[i][j];
if( tmp != 0)
{
for(k=1;k<5;k++)
if(Map[i][j+k] != tmp) /* 判斷Map[i][j+0]到Map[i][j+4]是否都相等(且不等於0) */
break;
if(k==6)
return tmp;
}
}
}
/* 判斷所有縱行 */
for(i=0;i<MAX_LINE-5;i++)
{
for(j=0;j<MAX_ROW;j++)
{
tmp=Map[i][j];
if( tmp != 0)
{
for(k=1;k<5;k++) /* 判斷Map[i+0][j]到Map[i+4][j]是否都相等(且不等於0) */
if(Map[i+k][j] != tmp)
break;
if(k==6)
return tmp;
}
}
}
/* 判斷所有斜行(撇) */
for(i=5;i<MAX_LINE;i++)
{
for(j=0;j<MAX_ROW-5;j++)
{
tmp=Map[i][j];
if( tmp != 0)
{
for(k=1;k<5;k++) /* 判斷Map[i-0][j+0]到Map[i-4][j+4]是否都相等(且不等於0) */
if(Map[i-k][j+k] != tmp)
break;
if(k==6)
return tmp;
}
}
}
/* 判斷所有斜行(捺) */
for(i=0;i<MAX_LINE-5;i++)
{
for(j=0;j<MAX_ROW-5;j++)
{
tmp=Map[i][j];
if( tmp != 0)
{
for(k=1;k<5;k++)
if(Map[i+k][j+k] != tmp) /* 判斷Map[i+0][j+0]到Map[i+4][j+4]是否都相等(且不等於0) */
break;
if(k==6)
return tmp;
}
}
}
return 0;
}