#include<stdio.h>
#include <math.h>
void printPan(char arr[][3]){
int i=0;
printf(" ——————
");
printf("| %c | %c | %c |
",arr[0][0],arr[0][1],arr[0][2]);
printf(" —————
");
printf("| %c | %c | %c |
",arr[1][0],arr[1][1],arr[1][2]);
printf(" —————
");
printf("| %c | %c | %c |
",arr[2][0],arr[2][1],arr[2][2]);
printf(" ——————
");
}
int userPut(char arr[][3],int x,int y){
if(arr[x-1][y-1]==' '){
arr[x-1][y-1]='X';
return 0;
}
// printf("该位置已有棋子,请重新输入!
");
return 1;
}
void pcPut(char arr[][3]){
int x=rand()%3;
int y=rand()%3;
while(arr[x][y]!=' ')
{
x=rand()%3;
y=rand()%3;
}
arr[x][y]='0';
printPan(arr);
}
int ifVictor(char arr[][3]){
int i=0,j=0;
for(i=0;i<3;i++){
if((arr[i][0]=='X')){
if(((arr[i][0]==arr[i][1])&&(arr[i][0]==arr[i][2]))){ //行相等
printf("恭喜您胜利了!
");
return 1;
}
}
if(arr[0][i]=='X'){
if((arr[0][i]==arr[1][i])&&(arr[0][i]==arr[2][i])){ //列相等
printf("恭喜您胜利了!
");
return 1;
}
}
if(arr[i][0]=='0'){
if((arr[i][0]==arr[i][1])&&(arr[i][0]==arr[i][2])){ //行相等
printf("很遗憾,你输了!
");
return -1;
}
}
if(arr[0][i]=='0'){
if((arr[0][i]==arr[1][i])&&(arr[0][i]==arr[2][i])){ //列相等
printf("很遗憾,你输了!
");
return -1;
}
}
}
if((arr[0][0]=='X'||arr[0][0]=='0')&&((arr[0][0]==arr[1][1])&&(arr[0][0]==arr[2][2]))){
if(arr[0][0]=='X'){
printf("恭喜您胜利了!
");
return 1;
}
if(arr[0][0]=='0'){
printf("很遗憾,你输了!
");
return -1;
}
}
if((arr[0][2]=='X'||arr[0][2]=='0')&&((arr[0][2]==arr[1][1])&&(arr[0][2]==arr[2][0]))){
if(arr[0][2]=='X'){
printf("恭喜您胜利了!
");
return 1;
}
if(arr[0][2]=='0'){
printf("很遗憾,你输了!
");
return -1;
}
}
return 0;
}
int is_kon(char arr[][3]){
int i=0,j=0,n=0;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(arr[i][j]==' '){
return 0;
}
}
}
return 1;
}
void clr_arr(char arr[][3]){
int i=0,j=0;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
arr[i][j]=' ';
}
}
}
int main(){
char arr[3][3]={' ',' ',' ',' ',' ',' ',' ',' ',' '};
int x=0,y=0;
system("color fd");
printf("三子棋游戏
游戏说明:连续三个一样的即胜利!输入坐标,坐标用空格隔开,然后回车;例如: 2 2
按回车开始游戏
");
getchar();
while(1){
clr_arr(arr);
while(1){
system("cls");
printPan(arr);
printf("请输入位置:");
scanf("%d %d",&x,&y);
if(userPut(arr,x,y)){
continue;
}
if(ifVictor(arr)!=0){
system("pause");
break;
}
if(is_kon(arr)==1){
printf("平局!
");
system("pause");
break;
}
pcPut(arr);
if(ifVictor(arr)!=0){
system("pause");
break;
}
}
printf("还要继续吗?(按回车继续,'#'结束)
");
fflush(stdin);
if(getchar()=='#'){
break;
}
}
printf("游戏结束!
");
system("pause");
return 0;
}





