chess.h //头文件模块
******************
#ifndef __CHESS_H__
#define __CHESS_H__
#define _CRT_SECURE_NO_WARNINGS 1
#define rows 3
#define cols 3
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu(char arr[rows][cols]);
void Init(char arr[rows][cols]);
void Display(char arr[rows][cols]);
void Player_chess(char arr[rows][cols]) ;
void Computer_chess(char arr[rows][cols]);
int Check_full(char arr[rows][cols]);
char Check_win(char arr[rows][cols]);
#endif
**************
chess.c //函数模块
***************
#include"chess.h"
void menu(char arr[rows][cols])
{
printf("******************************************************\n");
printf("* 1:开始游戏 0:退出游戏 *\n");
printf("******************************************************\n");
printf("请选择是否开始游戏:>\n");
}
void Init(char arr[rows][cols]) //初始化棋盘
{
int i=0,j=0;
for(i=0;i<rows;i++)
{
for(j=0;j<cols;j++)
{
arr[i][j]=' ';
}
}
}
void Display(char arr[rows][cols]) //打印棋盘
{
int i=0;
for(i=0;i<cols;i++)
{
printf(" %c | %c | %c \n",arr[i][0],arr[i][1],arr[i][2]);
if(i!=2)
printf("---|---|---");
printf("\n");
}
}
void Player_chess(char arr[rows][cols]) //玩家落子
{
int x=0;
int y=0;
while(1)
{
printf("玩家选择落子位置:>\n");
scanf("%d%d",&x,&y);
x--;
y--;
if(arr[x][y]==' ')
{
arr[x][y]='X';
break;
}
else
{
printf("所选位置已有棋子请重选!\n");
continue;
}
}
}
void Computer_chess(char arr[rows][cols]) //电脑落子
{
srand((unsigned)time(NULL));
while (1)
{
int x = 0;
int y = 0;
srand((unsigned)time(NULL));
x = rand() % 3;
y = rand() % 3;
if (arr[1][1] == ' ' )
{
arr[1][1] = 'O';
break;}
else if (arr[x][y] == ' ')
{
arr[x][y] = 'O';
break;
}
else
{
if (Check_full(arr) == 0)
{
continue;
}
else
{
break;
}
}
}}
int Check_full(char arr[rows][cols]) //判断棋盘是否空
{
int i = 0;
int j = 0;
for (i = 0; i < rows; i++)
{
for (j = 0; j <cols; j++)
{
if (arr[i][j] == ' ')
{
return 0;
}
}
}
return 1;
}
char Check_win(char arr[rows][cols]) //判断电脑赢还是玩家赢
{
int i = 0;
int ret = 0;
for (i = 0; i < rows; i++)
{
if ((arr[i][0] == arr[i][1]) && (arr[i][2] == arr[i][1]))
{
return arr[i][0];
}
}
for (i = 0; i < cols; i++)
{
if ((arr[0][i] == arr[1][i]) && (arr[2][i] == arr[1][i]))
{
return arr[0][i];
}
}
if ((arr[0][0] == arr[1][1]) && (arr[1][1] == arr[2][2]))
{
return arr[0][0];
}
if ((arr[0][2] == arr[1][1]) && (arr[1][1] == arr[2][0]))
{
return arr[2][0];
}
ret = Check_full(arr);
if (ret == 1)
{
return 'q';
}
return ' ';
}
***********
text.c //测试模块
***********
#include"chess.h"
int main()
{
char arr[rows][cols]={0};
int input=1;
int a=0;
while(input)
{
menu(arr);
scanf("%d",&input);
switch(input)
{
case 1:
{ char ret=0;
Init(arr);
printf("**********************先后手***********************\n");
printf("************ 1.后手 2.先手 ******************\n");
printf("***************************************************\n");
scanf("%d",&a);
if(a==1)
{
do
{
Display(arr);
Computer_chess(arr);
Display(arr);
if(Check_win(arr) != ' ')
{
ret=Check_win(arr);
break;
}
Player_chess(arr);
ret=Check_win(arr);
}
while (ret==' ');
}
if(a==2)
{
do
{
Display(arr);
Player_chess(arr);
Display(arr);
if(Check_win(arr) != ' ')
{
ret=Check_win(arr);
break;
}
Computer_chess(arr);
ret=Check_win(arr);
}
while (ret==' '); }
Display(arr);
if (ret == 'X')
{
printf("玩家赢\n");
}
else if (ret == 'O')
{
printf("电脑赢\n");
}
else if (ret == 'q')
{
printf("游戏平局\n");
}
}
break;
case 0:
break;
}
}
system("pause");
return 0;
}
*********