# include & ltiomanip & gt
使用?命名空間?std
const?int?x?=?21;?//棋盤行數
const?int?y?=?21;?//棋盤列數
夏爾?p[X][Y];//定義棋盤
int?m = 0;//定義壹個臨時點,保存輸入坐標。
int?n = 0;
作廢?Display()//輸出棋盤
{
for(int?I = 0;?我& ltx;?i++)
cout & lt& ltsetw(3)& lt;& ltsetfill('?')& lt& lt我;
cout & lt& ltendl
for(int?I = 1;?我& lty;?i++)
{
cout & lt& ltsetw(3)& lt;& ltsetfill('?')& lt& lt我;
for(int?j = 1;j & ltx;j++)
cout & lt& ltsetw(3)& lt;& ltsetfill('?')& lt& ltp[I][j];
cout & lt& ltendl
}
}
作廢?Black()//黑棋移動。
{
cout & lt& lt"請輸入黑色的放置位置:\n "
& lt& lt”請輸入行數:“;
CIN & gt;& gtm;
cout & lt& lt請輸入列數:“;
CIN & gt;& gtn;
如果(m & lt= 0 | | m & gt= X | | n & gt= Y | | n & lt=0)
{
cout & lt& lt“超出棋盤範圍,請重新輸入正確坐標!\ n ";
黑色();
}
不然呢?if((p[m][n]= = 1)| | p[m][n]= = 2)
{
cout & lt& lt“此處有棋子,請重新選擇移動點!\ n ";
黑色();
}
其他
p[m][n]= 1;?//黑邊用1表示。
系統(“cls”);
顯示();
}
作廢?Red()//紅方移動。
{
cout & lt& lt"請用紅色輸入位置:\n "
& lt& lt”請輸入行數:“;
CIN & gt;& gtm;
cout & lt& lt請輸入列數:“;
CIN & gt;& gtn;
如果(m & gt= X | | m & lt= 0 | | n & lt= 0 | | n & gt=Y)
{
cout & lt& lt“超出棋盤範圍,請重新輸入正確坐標!\ n ";
紅色();
}
不然呢?if((p[m][n]= = 1)| | p[m][n]= = 2)
{
cout & lt& lt“此處有棋子,請重新選擇移動點!\ n ";
紅色();
}
其他
p[m][n]= 2;?//紅色方塊用2表示。
系統(“cls”);
顯示();
}
int?evaluate()//只需要判斷以落點為中心的九點“m”是否連續。
{
int?k?=?0,r?=?0;
/*對角線判斷*/
for(k = 3;k & ltx-2;K++)//兩個,其中p[k][r]!='-'是消除漏洞的情況。
{
for(r = 3;r & lty-2;r++)
{
if(p[k][r]!= '-' & amp;& ampp[k-2][r-2]= p[k][r]& amp;& ampp[k-1][r-1]= p[k][r]& amp;& ampp[k+1][r+1]= p[k][r]& amp;& ampp[k+2][r+2]==p[k][r])
回歸?1;
不然呢?if(p[k][r]!= '-' & amp;& ampp[k+2][r-2]= p[k][r]& amp;& ampp[k+1][r-1]= p[k][r]& amp;& ampp[k-1][r+1]= p[k][r]& amp;& ampp[k-2][r+2]==p[k][r])
回歸?1;
}
}
/*水平線判斷*/
for(k = 1;k & ltx;k++)//p[k][r]!='-'是消除漏洞的情況。
for(r = 3;r & lty-2;r++)
if(p[k][r]!= '-' & amp;& ampp[k][r-2]= = p[k][r]& amp;& ampp[k][r-1]= = p[k][r]& amp;& ampp[k][r+1]= = p[k][r]& amp;& ampp[k][r+2]==p[k][r])
回歸?1;
/*垂直線判斷*/
for(k = 3;k & ltx-2;k++)//p[k][r]!='-'是消除漏洞的情況。
for(r = 1;r & lty;r++)
if(p[k][r]!= '-' & amp;& ampp[k-2][r]= = p[k][r]& amp;& ampp[k-1][r]= = p[k][r]& amp;& ampp[k+1][r]= = p[k][r]& amp;& ampp[k+2][r]==p[k][r])
回歸?1;
回歸?0;
}
int?主()
{
memset(p,'-',441);//初始化為“-”
cout & lt& lt"歡迎來到簡單的雙人五子棋遊戲\n "
& lt& lt“五子棋的棋分如下:\ n”;
顯示();
while(1)
{
紅色();
if(evalue())
{
cout & lt& lt“紅色勝利了!\ n ";
打破;
}
黑色();
if(evalue())
{
cout & lt& lt“黑棋贏了!\ n ";
打破;
}
}
回歸?0;
每個人都玩五子棋