#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
char arr[3][3] = { 0 };
int count = 9;
void print()
{
int i = 0;
printf(" | | \n");
for( i=0; i<3;i++)
{
printf("_%c_|_%c_|_%c_\n",arr[i][0],arr[i][1],arr[i][2]);
if(i<2)
printf(" | | \n");
}
}
void play()
{
int i = 0;
int j = 0;
printf("玩家:");
scanf("%d%d",&i,&j);
if(i<1 || i>3 ||j<1 || j>3 || arr[i - 1][j - 1] != ' ')
{
printf("输入有误");
play();
}
else
{
arr[i-1][j-1] = 'X';
count --;
}
}
void computer()
{
int i = 0;
int j = 0;
printf("电脑:");
srand((unsigned)time(NULL));
i = rand()%3;
j = rand()%3;
while (arr[i][j] != ' ')
{
i = rand() % 3;
j = rand() % 3;
}
arr[i][j] = 'O';
count--;
}
int winer()
{
if ((arr[0][0] == arr[0][1] && arr[0][1] == arr[0][2] && arr[0][2] == 'X') ||
(arr[1][0] == arr[1][1] && arr[1][1] == arr[1][2] && arr[1][2] == 'X') ||
(arr[2][0] == arr[2][1] && arr[2][1] == arr[2][2] && arr[2][2] == 'X') ||
(arr[0][0] == arr[1][0] && arr[1][0] == arr[2][0] && arr[2][0] == 'X') ||
(arr[0][1] == arr[1][1] && arr[1][1] == arr[2][1] && arr[2][1] == 'X') ||
(arr[0][2] == arr[1][2] && arr[1][2] == arr[2][2] && arr[2][2] == 'X') ||
(arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[2][2] == 'X') ||
(arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[2][0] == 'X'))
return 1;
else if ((arr[0][0] == arr[0][1] && arr[0][1] == arr[0][2] && arr[0][2] == 'O') ||
(arr[1][0] == arr[1][1] && arr[1][1] == arr[1][2] && arr[1][2] == 'O') ||
(arr[2][0] == arr[2][1] && arr[2][1] == arr[2][2] && arr[2][2] == 'O') ||
(arr[0][0] == arr[1][0] && arr[1][0] == arr[2][0] && arr[2][0] == 'O') ||
(arr[0][1] == arr[1][1] && arr[1][1] == arr[2][1] && arr[2][1] == 'O') ||
(arr[0][2] == arr[1][2] && arr[1][2] == arr[2][2] && arr[2][2] == 'O') ||
(arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[2][2] == 'O') ||
(arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[2][0] == 'O'))
return 0;
else if (count == 0)
return -1;
}
void menu()
{
printf("*********** 1.play *********\n");
printf("*********** 0.exit *********\n");
}
int main()
{
int i = 0;
int j = 0;
int a = 0;
for( i=0; i<3; i++)
for( j=0; j<3;j++)
arr[i][j]=' ';
menu();
printf("请选择");
scanf("%d" ,&a);
while(a)
{
while(1)
{ print();
if(winer()==-1||winer()==0|| winer()==1)
{
break;
}
play();
print();
if(winer()==-1||winer()==0||winer()==1)
{
break;
}
computer();
}
if(winer() ==1)
printf("玩家赢\n");
else if(winer()==0)
printf("电脑赢\n");
else
printf("平局\n");
break;
}
return 0;
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
char arr[3][3] = { 0 };
int count = 9;
void print()
{
int i = 0;
printf(" | | \n");
for( i=0; i<3;i++)
{
printf("_%c_|_%c_|_%c_\n",arr[i][0],arr[i][1],arr[i][2]);
if(i<2)
printf(" | | \n");
}
}
void play()
{
int i = 0;
int j = 0;
printf("玩家:");
scanf("%d%d",&i,&j);
if(i<1 || i>3 ||j<1 || j>3 || arr[i - 1][j - 1] != ' ')
{
printf("输入有误");
play();
}
else
{
arr[i-1][j-1] = 'X';
count --;
}
}
void computer()
{
int i = 0;
int j = 0;
printf("电脑:");
srand((unsigned)time(NULL));
i = rand()%3;
j = rand()%3;
while (arr[i][j] != ' ')
{
i = rand() % 3;
j = rand() % 3;
}
arr[i][j] = 'O';
count--;
}
int winer()
{
if ((arr[0][0] == arr[0][1] && arr[0][1] == arr[0][2] && arr[0][2] == 'X') ||
(arr[1][0] == arr[1][1] && arr[1][1] == arr[1][2] && arr[1][2] == 'X') ||
(arr[2][0] == arr[2][1] && arr[2][1] == arr[2][2] && arr[2][2] == 'X') ||
(arr[0][0] == arr[1][0] && arr[1][0] == arr[2][0] && arr[2][0] == 'X') ||
(arr[0][1] == arr[1][1] && arr[1][1] == arr[2][1] && arr[2][1] == 'X') ||
(arr[0][2] == arr[1][2] && arr[1][2] == arr[2][2] && arr[2][2] == 'X') ||
(arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[2][2] == 'X') ||
(arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[2][0] == 'X'))
return 1;
else if ((arr[0][0] == arr[0][1] && arr[0][1] == arr[0][2] && arr[0][2] == 'O') ||
(arr[1][0] == arr[1][1] && arr[1][1] == arr[1][2] && arr[1][2] == 'O') ||
(arr[2][0] == arr[2][1] && arr[2][1] == arr[2][2] && arr[2][2] == 'O') ||
(arr[0][0] == arr[1][0] && arr[1][0] == arr[2][0] && arr[2][0] == 'O') ||
(arr[0][1] == arr[1][1] && arr[1][1] == arr[2][1] && arr[2][1] == 'O') ||
(arr[0][2] == arr[1][2] && arr[1][2] == arr[2][2] && arr[2][2] == 'O') ||
(arr[0][0] == arr[1][1] && arr[1][1] == arr[2][2] && arr[2][2] == 'O') ||
(arr[0][2] == arr[1][1] && arr[1][1] == arr[2][0] && arr[2][0] == 'O'))
return 0;
else if (count == 0)
return -1;
}
void menu()
{
printf("*********** 1.play *********\n");
printf("*********** 0.exit *********\n");
}
int main()
{
int i = 0;
int j = 0;
int a = 0;
for( i=0; i<3; i++)
for( j=0; j<3;j++)
arr[i][j]=' ';
menu();
printf("请选择");
scanf("%d" ,&a);
while(a)
{
while(1)
{ print();
if(winer()==-1||winer()==0|| winer()==1)
{
break;
}
play();
print();
if(winer()==-1||winer()==0||winer()==1)
{
break;
}
computer();
}
if(winer() ==1)
printf("玩家赢\n");
else if(winer()==0)
printf("电脑赢\n");
else
printf("平局\n");
break;
}
return 0;
}
有待改进。(电脑过于简单)