#include <bits/stdc++.h>
using namespace std;
int a[10][10];
int p(){
bool flag=false;
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
if(a[i][j]==0){
flag=true;
continue;
}
if(a[i][j]==1 && a[i+1][j]==1 && a[i+2][j]==1){
return 1;
}
if(a[i][j]==1 && a[i][j+1]==1 && a[i][j+2]==1){
return 1;
}
if(a[i][j]==1 && a[i+1][j+1]==1 && a[i+2][j+2]==1)return 1;
if(a[i][j]==2 && a[i+1][j]==2 && a[i+2][j]==2){
return 2;
}
if(a[i][j]==2 && a[i][j+1]==2 && a[i][j+2]==2){
return 2;
}
if(a[i][j]==2 && a[i+1][j+1]==2 && a[i+2][j+2]==2)return 2;
}
}
if(!flag){
return 3;
}
return 4;
}
int main(){
cout << "欢迎来到三子棋游戏\n";
system("pause");
system("cls");
cout << ".表示空格,X表示你的棋子,O表示我的\n";
system("pause");
system("cls");
int i=0;
while(true){
int z=p();
if(z==1){
cout << "你赢了";
return 0;
}else if(z==2){
cout << "你输了\n";
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
if(a[i][j]==0)cout << '.';
if(a[i][j]==1)cout << 'X';
if(a[i][j]==2)cout << 'O';
}
cout << '\n';
}
return 0;
}
else if(z==3){
cout << "平局";
return 0;
}
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
if(a[i][j]==0)cout << '.';
if(a[i][j]==1)cout << 'X';
if(a[i][j]==2)cout << 'O';
}
cout << '\n';
}
if((i&1)==0){
cout << "你要在哪里落子 格式:行 列:";
int x,y;
F:
cin >> x >> y;
if(a[x][y] || x<=0 || x>3 || y<=0 || y>3){
cout << "请重新输入:";
goto F;
}
a[x][y]=1;
}else{
int f,g;
random_device rd;
srand(rd());
C:
f=rand()%3+1;
g=rand()%3+1;
if(a[f][g]!=0)goto C;
a[f][g]=2;
}
i++;
system("pause");
system("cls");
}
return 0;
}