简单二人五子棋,二维制图,暴力判断
#include<bits/stdc++.h>
using namespace std;
char a[10][10];
int x,y,f;
bool judge(int yy,int xx)
{
int c=yy,d=xx;
for(int i=1;i<=4;i++)
{
if(a[c][d]!=a[++c][d]) break;
if(i==4) return false;
}
c=yy,d=xx;
for(int i=1;i<=4;i++)
{
if(a[c][d]!=a[--c][d]) break;
if(i==4) return false;
}
c=yy,d=xx;
for(int i=1;i<=4;i++)
{
if(a[c][d]!=a[c][++d]) break;
if(i==4) return false;
}
c=yy,d=xx;
for(int i=1;i<=4;i++)
{
if(a[c][d]!=a[c][--d]) break;
if(i==4) return false;
}
c=yy,d=xx;
for(int i=1;i<=4;i++)
{
if(a[c][d]!=a[--c][--d]) break;
if(i==4) return false;
}
c=yy,d=xx;
for(int i=1;i<=4;i++)
{
if(a[c][d]!=a[++c][++d]) break;
if(i==4) return false;
}
c=yy,d=xx;
for(int i=1;i<=4;i++)
{
if(a[c][d]!=a[++c][--d]) break;
if(i==4) return false;
}
c=yy,d=xx;
for(int i=1;i<=4;i++)
{
if(a[c][d]!=a[--c][++d]) break;
if(i==4) return false;
}
c=yy,d=xx;
return true;
}
void make()
{
system("cls");
cout<<" ";
for(int i=1;i<=9;i++) cout<<" "<<i;
cout<<endl;
for(int i=1;i<=9;i++)
{
cout<<" ";
for(int j=1;j<=19;j++) cout<<"_";
cout<<endl;
cout<<i;
for(int k=1;k<=9;k++)
cout<<"|"<<a[i][k];
cout<<"|"<<endl;
}
cout<<" ";
for(int j=1;j<=19;j++) cout<<"_";
cout<<endl;
return;
}
int main()//made by Tombaugh
{
for(int i=0;i<=10;i++)
for(int j=0;j<=10;j++)
a[i][j]=' ';
make();
do
{
if(++f%2==1) cout<<"玩家一请输入你要下的坐标:"<<endl;
else cout<<"玩家二请输入你要下的坐标:"<<endl;
cin>>x>>y;
while(x<1||x>9||y<1||y>9) cout<<"坐标不合法"<<endl,cin>>x>>y;
while(a[y][x]!=' ') cout<<"此位置已有棋"<<endl,cin>>x>>y;
if(f%2==1) a[y][x]='X';
else a[y][x]='O';
make();
}while(judge(y,x));
if(f%2==1) cout<<"游戏结束,玩家一获胜";
else cout<<"游戏结束,玩家二获胜";
return 0;
}