五子棋(完成版)
#include <bits/stdc++.h>
using namespace std;
int lie=16,hang=16,lie_shu,hang_shu;
int list_flag[16][16];
bool black=true;
int B = 0;
int black_win( int a , int b )
{
if(list_flag[a][b] == 1&&list_flag[a][b+1] == 1&&list_flag[a][b+2] == 1&&list_flag[a][b+3] == 1&&list_flag[a][b+4] == 1 )
{
B=1;
}else if(list_flag[a][b] == 1&&list_flag[a][b-1] == 1&&list_flag[a][b+1] == 1&&list_flag[a][b+2] == 1&&list_flag[a][b+3] == 1)
{
B=1;
}else if(list_flag[a][b] == 1&&list_flag[a][b-1] == 1&&list_flag[a][b+1] == 1&&list_flag[a][b+2] == 1&&list_flag[a][b-2] == 1)
{
B=1;
}else if(list_flag[a][b] == 1&&list_flag[a][b+1] == 1&&list_flag[a][b-1] == 1&&list_flag[a][b-2] == 1&&list_flag[a][b-3] == 1)
{
B=1;
}else if(list_flag[a][b] == 1&&list_flag[a][b-1] == 1&&list_flag[a][b-4] == 1&&list_flag[a][b-2] == 1&&list_flag[a][b-3] == 1)
{
B=1;
}else if(list_flag[a+1][b] == 1&&list_flag[a+2][b] == 1&&list_flag[a+3][b] == 1&&list_flag[a+4][b] == 1&&list_flag[a][b] == 1)
{
B=1;
}else if(list_flag[a-1][b] == 1&&list_flag[a+2][b] == 1&&list_flag[a+3][b] == 1&&list_flag[a+1][b] == 1&&list_flag[a][b] == 1)
{
B=1;
}else if(list_flag[a+1][b] == 1&&list_flag[a+2][b] == 1&&list_flag[a-1][b] == 1&&list_flag[a-2][b] == 1&&list_flag[a][b] == 1)
{
B=1;
}else if(list_flag[a+1][b] == 1&&list_flag[a-2][b] == 1&&list_flag[a-3][b] == 1&&list_flag[a-1][b] == 1&&list_flag[a][b] == 1)
{
B=1;
}else if(list_flag[a-1][b] == 1&&list_flag[a-2][b] == 1&&list_flag[a-3][b] == 1&&list_flag[a-4][b] == 1&&list_flag[a][b] == 1)
{
B=1;
}else if(list_flag[a+1][b+1] == 1&&list_flag[a+2][b+2] == 1&&list_flag[a+3][b+3] == 1&&list_flag[a+4][b+4] == 1&&list_flag[a][b] == 1)
{
B=1;
}else if(list_flag[a-1][b+1] == 1&&list_flag[a+1][b+1] == 1&&list_flag[a+2][b+2] == 1&&list_flag[a+3][b+3] == 1&&list_flag[a][b] == 1)
{
B=1;
}else if(list_flag[a+1][b+1] == 1&&list_flag[a+2][b+2] == 1&&list_flag[a-1][b+1] == 1&&list_flag[a-2][b+2] == 1&&list_flag[a][b] == 1)
{
B=1;
}else if(list_flag[a+1][b+1] == 1&&list_flag[a-3][b+3] == 1&&list_flag[a-2][b+2] == 1&&list_flag[a-1][b+1] == 1&&list_flag[a][b] == 1)
{
B=1;
}else if(list_flag[a-4][b+4] == 1&&list_flag[a-3][b+3] == 1&&list_flag[a-2][b+2] == 1&&list_flag[a-1][b+1] == 1&&list_flag[a][b] == 1)
{
B=1;
}
else if(list_flag[a-1][b-1] == 1&&list_flag[a-2][b-2] == 1&&list_flag[a-3][b-3] == 1&&list_flag[a-4][b-4] == 1&&list_flag[a][b] == 1)
{
B=1;
}else if(list_flag[a-1][b-1] == 1&&list_flag[a+1][b+1] == 1&&list_flag[a-2][b-2] == 1&&list_flag[a-3][b-3] == 1&&list_flag[a][b] == 1)
{
B=1;
}else if(list_flag[a+1][b+1] == 1&&list_flag[a+2][b+2] == 1&&list_flag[a-1][b-1] == 1&&list_flag[a-2][b-2] == 1&&list_flag[a][b] == 1)
{
B=1;
}else if(list_flag[a+1][b+1] == 1&&list_flag[a-3][b-3] == 1&&list_flag[a-2][b-2] == 1&&list_flag[a-1][b-1] == 1&&list_flag[a][b] == 1)
{
B=1;
}else if(list_flag[a-4][b-4] == 1&&list_flag[a-3][b-3] == 1&&list_flag[a-2][b-2] == 1&&list_flag[a-1][b-1] == 1&&list_flag[a][b] == 1)
{
B=1;
}
}
int white_win( int a , int b )
{
if(list_flag[a][b] == 2&&list_flag[a][b+1] == 2&&list_flag[a][b+2] == 2&&list_flag[a][b+3] == 2&&list_flag[a][b+4] == 2 )
{
B=2;
}else if(list_flag[a][b] == 2&&list_flag[a][b-1] == 2&&list_flag[a][b+1] == 2&&list_flag[a][b+2] == 2&&list_flag[a][b+3] == 2)
{
B=2;
}else if(list_flag[a][b] == 2&&list_flag[a][b-1] == 2&&list_flag[a][b+1] == 2&&list_flag[a][b+2] == 2&&list_flag[a][b-2] == 2)
{
B=2;
}else if(list_flag[a][b] == 2&&list_flag[a][b+1] == 2&&list_flag[a][b-1] == 2&&list_flag[a][b-2] == 2&&list_flag[a][b-3] == 2)
{
B=2;
}else if(list_flag[a][b] == 2&&list_flag[a][b-1] == 2&&list_flag[a][b-4] == 2&&list_flag[a][b-2] == 2&&list_flag[a][b-3] == 2)
{
B=2;
}else if(list_flag[a+1][b] == 2&&list_flag[a+2][b] == 2&&list_flag[a+3][b] == 2&&list_flag[a+4][b] == 2&&list_flag[a][b] == 2)
{
B=2;
}else if(list_flag[a-1][b] == 2&&list_flag[a+2][b] == 2&&list_flag[a+3][b] == 2&&list_flag[a+1][b] == 2&&list_flag[a][b] == 2)
{
B=2;
}else if(list_flag[a+1][b] == 2&&list_flag[a+2][b] == 2&&list_flag[a-1][b] == 2&&list_flag[a-2][b] == 2&&list_flag[a][b] == 2)
{
B=2;
}else if(list_flag[a+1][b] == 2&&list_flag[a-2][b] == 2&&list_flag[a-3][b] == 2&&list_flag[a-1][b] == 2&&list_flag[a][b] == 2)
{
B=2;
}else if(list_flag[a-1][b] == 2&&list_flag[a-2][b] == 2&&list_flag[a-3][b] == 2&&list_flag[a-4][b] == 2&&list_flag[a][b] == 2)
{
B=2;
}else if(list_flag[a+1][b+1] == 2&&list_flag[a+2][b+2] == 2&&list_flag[a+3][b+3] == 2&&list_flag[a+4][b+4] == 2&&list_flag[a][b] == 2)
{
B=2;
}else if(list_flag[a-1][b+1] == 2&&list_flag[a+1][b+1] == 2&&list_flag[a+2][b+2] == 2&&list_flag[a+3][b+3] == 2&&list_flag[a][b] == 2)
{
B=2;
}else if(list_flag[a+1][b+1] == 2&&list_flag[a+2][b+2] == 2&&list_flag[a-1][b+1] == 2&&list_flag[a-2][b+2] == 2&&list_flag[a][b] == 2)
{
B=2;
}else if(list_flag[a+1][b+1] == 2&&list_flag[a-3][b+3] == 2&&list_flag[a-2][b+2] == 2&&list_flag[a-1][b+1] == 2&&list_flag[a][b] == 2)
{
B=2;
}else if(list_flag[a-4][b+4] == 2&&list_flag[a-3][b+3] == 2&&list_flag[a-2][b+2] == 2&&list_flag[a-1][b+1] == 2&&list_flag[a][b] == 2)
{
B=2;
}
else if(list_flag[a-1][b-1] == 2&&list_flag[a-2][b-2] == 2&&list_flag[a-3][b-3] == 2&&list_flag[a-4][b-4] == 2&&list_flag[a][b] == 2)
{
B=2;
}else if(list_flag[a-1][b-1] == 2&&list_flag[a+1][b+1] == 2&&list_flag[a-2][b-2] == 2&&list_flag[a-3][b-3] == 2&&list_flag[a][b] == 2)
{
B=2;
}else if(list_flag[a+1][b+1] == 2&&list_flag[a+2][b+2] == 2&&list_flag[a-1][b-1] == 2&&list_flag[a-2][b-2] == 2&&list_flag[a][b] == 2)
{
B=2;
}else if(list_flag[a+1][b+1] == 2&&list_flag[a-3][b-3] == 2&&list_flag[a-2][b-2] == 2&&list_flag[a-1][b-1] == 2&&list_flag[a][b] == 2)
{
B=2;
}else if(list_flag[a-4][b-4] == 2&&list_flag[a-3][b-3] == 2&&list_flag[a-2][b-2] == 2&&list_flag[a-1][b-1] == 2&&list_flag[a][b] == 2)
{
B=2;
}
}
int f5(){
system("cls");
for(int j=0;j<=hang;j++){
cout<<setw(3)<<j;
}
cout<<endl;
for(int i=0;i<lie;i++)
{
cout<<setw(3)<<i+1;
for(int j=0;j<hang;j++)
{
if(list_flag[i][j]==0){
cout<<setw(3)<<".";
}else if(list_flag[i][j]==1){
cout<<setw(3)<<"黑";
black_win(i,j);
}else if(list_flag[i][j]==2){
cout<<setw(3)<<"白";
white_win(i,j);
}
}
cout<<endl;
}
}
int main(){
int x,y;
while(true)
{
f5();
if(B == 1)
{
cout<<"BLACK_flag_WIN";
return 0;
}
if(B == 2)
{
cout<<"WHITE_flag_WIN";
return 0;
}
if(black==true){
cout<<"黑棋请下:"<<endl;
cin>>x>>y;
if(x<=lie&&y<=hang){
if(list_flag[x-1][y-1]!=0){//判断棋子是否越界
continue;
}
list_flag[x-1][y-1]=1;//说明该地方是黑棋
black=false; //切换白棋
}
}else{
cout<<"白棋请下:"<<endl;
cin>>x>>y;
if(x<=lie&&y<=hang){
if(list_flag[x-1][y-1]!=0){ //判断棋子是否越界
continue;
}
list_flag[x-1][y-1]=2; //说明该地方是黑棋
black=true;//切换黑棋
}
}
}
return 0;
}