#include<stdio.h>
#include<time.h>
#include<string.h>
#define ROW 3
#define REW 3
void Init_arry(char arr[ROW][REW]);
void Display(char arr[ROW][REW]);
void game(char arr[ROW][REW]);
void wan_jia(char arr[ROW][REW]);
int pan_duan(char arr[ROW][REW],int x,int y);
int win(char arr[ROW][REW]);
int pan_duan_dian(char arr[ROW][REW], int x, int y);
void Init_arry(char arr[ROW][REW])
{
int i = 0;
int j = 0;
for (i = 0; i < ROW; i++)
{
for (j = 0; j < REW; j++)
{
arr[i][j] = ' ';
}
}
}
void Display(char arr[ROW][REW])
{
int i = 0;
int j = 0;
int k = 0;
for (i = 0; i < ROW; i++)
{
for(j=0;j<REW;j++)
{
printf(" %c ", arr[i][j]);
if (j < REW - 1)
{
printf("|");
}
}
printf("\n");
if (j == REW )
{
printf("---|---|---\n");
}
}
}
int pan_duan(char arr[ROW][REW],int x,int y)
{
int i = 0;
int j = 0;
if (arr[x-1][y-1] != ' ')
{
printf("此坐标已被使用\n");
return 1;
}
return 0;
}
int pan_duan_dian(char arr[ROW][REW], int x, int y)
{
int i = 0;
int j = 0;
if (arr[x - 1][y - 1] != ' ')
{
return 1;
}
return 0;
}
void wan_jia(char arr[ROW][REW])
{
int x, y = 0;
agin: printf("玩家走\n");
printf("输入坐标\n");
scanf("%d%d", &x, &y);
int a=pan_duan(arr, x, y);
if (1==a)
{
goto agin;
}
arr[x-1][y-1] = '#';
}
void dian_nao(char arr[ROW][REW])
{
int p = 0;
int q = 0;
agin: printf("电脑走\n");
p = rand() % ROW + 1;
q= rand() % REW + 1;
int a = pan_duan_dian(arr, p, q);
if (1 == a)
{
goto agin;
}
arr[p - 1][q - 1] = '*';
}
void game(char arr[ROW][REW])
{
int a = 0;
int b = 0;
while (1)
{
wan_jia(arr);
Display(arr);
a = win(arr);
if (1 == a)
{
printf("玩家赢\n");
break;
}
if (2 == a)
{
printf("电脑赢\n");
break;
}
if (-1 == a)
{
printf("平局\n");
break;
}
dian_nao(arr);
Display(arr);
b = win(arr);
if (1 == b)
{
printf("电脑赢\n");
break;
}
if (2 == b)
{
printf("电脑赢\n");
break;
}
if (-1 == b)
{
printf("平局\n");
break;
}
}
return 0;
}
int win(char arr[ROW][REW])
{
int i = 0;
int j = 0;
int count = 0;
for (i = 0; i < ROW; i++)
{
if (arr[0][i]=='#' && arr[1][i]=='#' && arr[2][i] == '#') //玩家赢
{
return 1;
}
}
for (i = 0; i < REW; i++)
{
if (arr[i][0]=='#' && arr[i][1]=='#' && arr[i][2] == '#') //玩家赢
{
return 1;
}
}
if (arr[0][0]=='#' && arr[1][1]=='#' && arr[2][2] == '#')
{
return 1;
}
if (arr[2][0] =='#' && arr[1][1]=='#' && arr[0][2]== '#')
{
return 1;
}
for (i = 0; i < ROW; i++)
{
if (arr[0][i] == '*' && arr[1][i] == '*' && arr[2][i] == '*') //电脑赢
{
return 1;
}
}
for (i = 0; i < REW; i++)
{
if (arr[i][0] == '*' && arr[i][1] == '*' && arr[i][2] == '*') //电脑赢
{
return 1;
}
}
if (arr[0][0] == '*' && arr[1][1] == '*' && arr[2][2] == '*') //电脑赢
{
return 1;
}
if (arr[2][0] == '*' && arr[1][1] == '*' && arr[0][2] == '*') //电脑赢
{
return 1;
}
for (i = 0; i < ROW; i++) //平局
{
for (j = 0; j < REW; j++)
{
if (arr[i][j] != ' ')
{
count++;
}
}
}
if (count == 9)
{
return -1;
}
}
void meau()
{
printf("******************** 1.三子棋游戏 ***********************\n");
printf("******************** 0.exit ***********************\n");
}
int main()
{
srand((unsigned int)time(NULL));
int n = 0;
char arr[3][3] = { 0 };
do
{
meau();
scanf("%d", &n);
switch (n)
{
case 1:Init_arry(arr), game(arr); break;
case 0:break;
}
} while (n);
}
三子棋游戏
最新推荐文章于 2024-07-20 02:33:07 发布