自制井字棋
liangyanlun · · 个人记录
#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
int n,n1,n2,n3,n4,n5,n6,n7,n8,n9,m[5][5];
void p()
{
for(int i=1;i<=7;i++)
cout<<'-';
cout<<endl;
for(int i=1;i<=3;i++)
{
cout<<'|';
if(!m[1][i])cout<<' ';
if(m[1][i]==1)cout<<'o';
if(m[1][i]==2)cout<<'x';
}
cout<<'|'<<endl;
for(int i=1;i<=7;i++)
cout<<'-';
cout<<endl;
for(int i=1;i<=3;i++)
{
cout<<'|';
if(!m[2][i])cout<<' ';
if(m[2][i]==1)cout<<'o';
if(m[2][i]==2)cout<<'x';
}
cout<<'|'<<endl;
for(int i=1;i<=7;i++)
cout<<'-';
cout<<endl;
for(int i=1;i<=3;i++)
{
cout<<'|';
if(!m[3][i])cout<<' ';
if(m[3][i]==1)cout<<'o';
if(m[3][i]==2)cout<<'x';
}
cout<<'|'<<endl;
for(int i=1;i<=7;i++)
cout<<'-';
cout<<endl;
}
void s()
{
cout<<endl<<" 井字棋5.0";
cout<<endl<<"--------------华丽的分割线--------------";
Sleep(1000);
system("cls");
cout<<"高难度井字棋";
cout<<endl;
Sleep(1000);
cout<<"制作人:";
cout<<"梁彦伦";
Sleep(500);
system("cls");
cout<<"先手后手?"<<endl<<"先手输1,后手输0";
cin>>n;
memset(m,0,sizeof(m));
cout<<endl<<"输入x行y列";
Sleep(500);
cout<<"开始!";
system("cls");
system("mode con cols=15 lines=8");
system("color ad");
p();
for(int i=0;i<=4;i++)
for(int j=0;j<=4;j++)
{
if(i==0||i==4||j==0||j==4)
m[i][j]=3;
}
}
void weixian()
{
n3=n4=0;
if(m[1][2]==1&&m[1][3]==1&&m[1][1]==0
||m[2][2]==1&&m[3][3]==1&&m[1][1]==0
||m[2][1]==1&&m[3][1]==1&&m[1][1]==0)
{
n3=1;n4=1;return;
}
if(m[1][2]==1&&m[1][1]==1&&m[1][3]==0
||m[2][2]==1&&m[3][1]==1&&m[1][3]==0
||m[2][3]==1&&m[3][3]==1&&m[1][3]==0)
{
n3=1;n4=3;return;
}
if(m[3][2]==1&&m[3][3]==1&&m[3][1]==0
||m[2][2]==1&&m[1][3]==1&&m[3][1]==0
||m[2][1]==1&&m[1][1]==1&&m[3][1]==0)
{
n3=3;n4=1;return;
}
if(m[3][2]==1&&m[3][1]==1&&m[3][3]==0
||m[2][2]==1&&m[1][1]==1&&m[3][3]==0
||m[2][3]==1&&m[1][3]==1&&m[3][3]==0)
{
n3=3;n4=3;return;
}
if(m[1][3]==1&&m[1][1]==1&&m[1][2]==0
||m[2][2]==1&&m[3][2]==1&&m[1][2]==0)
{
n3=1;n4=2;return;
}
if(m[3][3]==1&&m[3][1]==1&&m[3][2]==0
||m[1][2]==1&&m[2][2]==1&&m[3][2]==0)
{
n3=3;n4=2;return;
}
if(m[2][3]==1&&m[2][2]==1&&m[2][1]==0
||m[1][1]==1&&m[3][1]==1&&m[2][1]==0)
{
n3=2;n4=1;return;
}
if(m[3][3]==1&&m[1][3]==1&&m[2][3]==0
||m[2][1]==1&&m[2][2]==1&&m[2][3]==0)
{
n3=2;n4=3;return;
}
if(m[2][1]==1&&m[2][3]==1&&m[2][2]==0
||m[3][2]==1&&m[1][2]==1&&m[2][2]==0
||m[1][1]==1&&m[3][3]==1&&m[2][2]==0
||m[3][1]==1&&m[1][3]==1&&m[2][2]==0)
{
n3=2;n4=2;return;
}
}
int main()
{
a2:;
system("mode con cols=40 lines=10");
system("color f0");
s();
for(int i=1;i<=9;i++)
{
if((n==1&&i%2)||(n==0&&i%2==0))
{
a1:;
cin>>n1>>n2;
if(n1>3||n2>3||n1<1||n2<1||m[n1][n2])
{
cout<<"不可以乱输!";
goto a1;
}
m[n1][n2]=1;
weixian();
if(n3&&n4)
{
i++;
m[n3][n4]=2;
}
}
else
{
if(!m[2][2])
{
m[2][2]=2;
}
else
{
if(!m[1][3])
{
m[1][3]=2;
}
else
{
if(!m[3][1])
{
m[3][1]=2;
}
else
{
if(!m[1][1])
{
m[1][1]=2;
}
else
if(!m[3][3])
{
m[3][3]=2;
}else
{
if(!m[1][2])
{
m[1][2]=2;
}
else
{
if(!m[3][2])
{
m[3][2]=2;
}
else
{
if(!m[2][1])
{
m[2][1]=2;
}
else
if(!m[2][3])
{
m[2][3]=2;
}
}
}
}
}
}
}
}
system("cls");
p();
Sleep(1000);
n3=n4=0;
if(m[1][2]==1&&m[1][3]==1&&m[1][1]==1
||m[2][2]==1&&m[3][3]==1&&m[1][1]==1
||m[2][1]==1&&m[3][1]==1&&m[1][1]==1)
{
n3=1;n4=1;
}
if(m[1][2]==1&&m[1][1]==1&&m[1][3]==1
||m[2][2]==1&&m[3][1]==1&&m[1][3]==1
||m[2][3]==1&&m[3][3]==1&&m[1][3]==1)
{
n3=1;n4=3;
}
if(m[3][2]==1&&m[3][3]==1&&m[3][1]==1
||m[2][2]==1&&m[1][3]==1&&m[3][1]==1
||m[2][1]==1&&m[1][1]==1&&m[3][1]==1)
{
n3=3;n4=1;
}
if(m[3][2]==1&&m[3][1]==1&&m[3][3]==1
||m[2][2]==1&&m[1][1]==1&&m[3][3]==1
||m[2][3]==1&&m[1][3]==1&&m[3][3]==1)
{
n3=3;n4=3;
}
if(m[1][3]==1&&m[1][1]==1&&m[1][2]==1
||m[2][2]==1&&m[3][2]==1&&m[1][2]==1)
{
n3=1;n4=2;
}
if(m[3][3]==1&&m[3][1]==1&&m[3][2]==1
||m[1][2]==1&&m[3][2]==1&&m[3][2]==1)
{
n3=3;n4=2;
}
if(m[2][3]==1&&m[2][1]==1&&m[2][1]==1
||m[1][2]==1&&m[3][2]==1&&m[2][1]==1)
{
n3=2;n4=1;
}
if(m[3][3]==1&&m[1][3]==1&&m[2][3]==1
||m[2][1]==1&&m[2][2]==1&&m[2][3]==1)
{
n3=2;n4=3;
}
if(m[2][1]==1&&m[2][3]==1&&m[2][2]==1
||m[3][2]==1&&m[1][2]==1&&m[2][2]==1
||m[1][1]==1&&m[3][3]==1&&m[2][2]==1
||m[3][1]==1&&m[1][3]==1&&m[2][2]==1)
n3=2;n4=2;
if(n3&&n4)
{
Sleep(1000);
system("cls");
cout<<"你赢了!";
Sleep(1000);
system("cls");
goto a2;
}
n3=n4=0;
if(m[1][2]==2&&m[1][3]==2&&m[1][1]==2
||m[2][2]==2&&m[3][3]==2&&m[1][1]==2
||m[2][1]==2&&m[3][1]==2&&m[1][1]==2)
{
n3=1;n4=1;
}
if(m[1][2]==2&&m[1][1]==2&&m[1][3]==2
||m[2][2]==2&&m[3][1]==2&&m[1][3]==2
||m[2][3]==2&&m[3][3]==2&&m[1][3]==2)
{
n3=1;n4=3;
}
if(m[3][2]==2&&m[3][3]==2&&m[3][1]==2
||m[2][2]==2&&m[1][3]==2&&m[3][1]==2
||m[2][1]==2&&m[1][1]==2&&m[3][1]==2)
{
n3=3;n4=1;
}
if(m[3][2]==2&&m[3][1]==2&&m[3][3]==2
||m[2][2]==2&&m[1][1]==2&&m[3][3]==2
||m[2][3]==2&&m[1][3]==2&&m[3][3]==2)
{
n3=3;n4=3;
}
if(m[1][3]==2&&m[1][1]==2&&m[1][2]==2
||m[2][2]==2&&m[3][2]==2&&m[1][2]==2)
{
n3=1;n4=2;
}
if(m[3][3]==2&&m[3][1]==2&&m[3][2]==2
||m[1][2]==2&&m[3][2]==2&&m[3][2]==2)
{
n3=3;n4=2;
}
if(m[2][3]==2&&m[2][1]==2&&m[2][1]==2
||m[1][2]==2&&m[3][2]==2&&m[2][1]==2)
{
n3=2;n4=1;
}
if(m[3][3]==2&&m[1][3]==2&&m[2][3]==2
||m[2][1]==2&&m[2][2]==2&&m[2][3]==2)
{
n3=2;n4=3;
}
if(m[2][1]==2&&m[2][3]==2&&m[2][2]==2
||m[3][2]==2&&m[1][2]==2&&m[2][2]==2
||m[1][1]==2&&m[3][3]==2&&m[2][2]==2
||m[3][1]==2&&m[1][3]==2&&m[2][2]==2)
n3=2;n4=2;
if(n3&&n4)
{
Sleep(1000);
system("cls");
cout<<"你输了!";
Sleep(1000);
system("cls");
goto a2;
}
}
Sleep(1000);
cout<<"平局,不错!";
Sleep(1000);
system("cls");
goto a2;
return 0;
}