// tset.h
#ifndef __GAME_H__
#define __GAME_H__
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define ROW 3
#define COL 3
void Display(char arr[ROW][COL],int row,int col);
void InitBoard(char arr[ROW][COL],int row,int col);
void Computermove(char arr[ROW][COL],int row,int col);
void Playermove(char arr[ROW][COL],int row,int col);
char IsWin(char arr[ROW][COL],int row,int col);
int count=9;
void InitBoard(char arr[ROW][COL],int row,int col) //初始化棋盘
{
for(row=0;row<ROW;row++)
{
for(col=0;col<COL;col++)
{
arr[row][col]=' ';
}
}
}
void Display(char arr[ROW][COL],int row,int col) //打印棋盘
{
for(row=0;row<3;row++)
{
printf(" %c | %c | %c \n",arr[row][0],arr[row][1],arr[row][2]);
// printf("------------\n");
}
for(row=0;row<2;row++)
{
printf("------------\n");
}
}
void Computermove(char arr[ROW][COL],int row,int col) //电脑走
{
srand((int)time(NULL)); //以当前时间为种子,产生随机数
while(count!=0)
{
row=rand()%3;
col=rand()%3;
if(arr[row][col] == ' ')
{
arr[row][col] ='0';
count--;
break;
}
}
}
void Playermove(char arr[ROW][COL],int row,int col) //玩家走
{
printf("请输入坐标>:");
while(count!=0)
{
scanf("%d %d",&row,&col);
if(arr[row][col]==' ')
{
arr[row][col]='X';
count--;
break;
}
else
{
printf("输入坐标有误!!\n");
}
}
}
char IsWin(char arr[ROW][COL],int row,int col) //检查是否赢了
{
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 'w'; //玩家赢
}
if((arr[0][0]==arr[0][1]&&arr[0][1]==arr[0][2]&&arr[0][2]=='0')
||(arr[1][0]==arr[1][1]&&arr[1][1]==arr[1][2]&&arr[1][2]=='0')
||(arr[2][0]==arr[2][1]&&arr[2][1]==arr[2][2]&&arr[2][2]=='0')
||(arr[0][0]==arr[1][0]&&arr[1][0]==arr[2][0]&&arr[2][0]=='0')
||(arr[0][1]==arr[1][1]&&arr[1][1]==arr[2][1]&&arr[2][1]=='0')
||(arr[0][2]==arr[1][2]&&arr[1][2]==arr[2][2]&&arr[2][2]=='0')
||(arr[0][0]==arr[1][1]&&arr[1][1]==arr[2][2]&&arr[2][2]=='0')
||(arr[0][2]==arr[1][1]&&arr[1][1]==arr[2][0]&&arr[2][0]=='0'))
{
return 'l'; //电脑赢
}
if(count==0)
{
return 'q'; //平局
}
#include<stdlib.h>
#include<time.h>
#include<windows.h>
#include"test.h"
void menu() //菜单
{
printf("***********************************\n");
printf("****** 1.play ******\n");
printf("****** 0,exit ******\n");
printf("***********************************\n");
}
void game()
{
char arr[ROW][COL] = {0};
int row = 0;
int col = 0;
int count = 9; //计数器
char c = ' '; //返回值
InitBoard(arr,row,col); //初始化
Display(arr, row, col); //打印空棋盘
while(1)
{
Playermove(arr,row,col);
Computermove(arr,row,col);
//Playermove(arr,row,col);
Display(arr, row, col); //打印玩家和电脑走后的棋盘
c=IsWin(arr,row,col);
if(c=='w')
{
printf("玩家赢\n");
break;
}
else if(c=='l')
{
printf("电脑赢\n");
break;
}
else if(c=='q')
{
printf("平局\n");
break;
}
}
}
int main()
{
int input=0;
while(1)
{
menu();
printf("请选择>: ");
scanf_s("%d",&input);
switch(input)
{
case 1:
game();
break;
case 0:
exit(1);
break;
default:
printf("输入错误!!\n");
break;
}
}
system("pause");
}
#ifndef __GAME_H__
#define __GAME_H__
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#define ROW 3
#define COL 3
void Display(char arr[ROW][COL],int row,int col);
void InitBoard(char arr[ROW][COL],int row,int col);
void Computermove(char arr[ROW][COL],int row,int col);
void Playermove(char arr[ROW][COL],int row,int col);
char IsWin(char arr[ROW][COL],int row,int col);
#endif//__GAME_H__
//game.c
#include"test.h"int count=9;
void InitBoard(char arr[ROW][COL],int row,int col) //初始化棋盘
{
for(row=0;row<ROW;row++)
{
for(col=0;col<COL;col++)
{
arr[row][col]=' ';
}
}
}
void Display(char arr[ROW][COL],int row,int col) //打印棋盘
{
for(row=0;row<3;row++)
{
printf(" %c | %c | %c \n",arr[row][0],arr[row][1],arr[row][2]);
// printf("------------\n");
}
for(row=0;row<2;row++)
{
printf("------------\n");
}
}
void Computermove(char arr[ROW][COL],int row,int col) //电脑走
{
srand((int)time(NULL)); //以当前时间为种子,产生随机数
while(count!=0)
{
row=rand()%3;
col=rand()%3;
if(arr[row][col] == ' ')
{
arr[row][col] ='0';
count--;
break;
}
}
}
void Playermove(char arr[ROW][COL],int row,int col) //玩家走
{
printf("请输入坐标>:");
while(count!=0)
{
scanf("%d %d",&row,&col);
if(arr[row][col]==' ')
{
arr[row][col]='X';
count--;
break;
}
else
{
printf("输入坐标有误!!\n");
}
}
}
char IsWin(char arr[ROW][COL],int row,int col) //检查是否赢了
{
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 'w'; //玩家赢
}
if((arr[0][0]==arr[0][1]&&arr[0][1]==arr[0][2]&&arr[0][2]=='0')
||(arr[1][0]==arr[1][1]&&arr[1][1]==arr[1][2]&&arr[1][2]=='0')
||(arr[2][0]==arr[2][1]&&arr[2][1]==arr[2][2]&&arr[2][2]=='0')
||(arr[0][0]==arr[1][0]&&arr[1][0]==arr[2][0]&&arr[2][0]=='0')
||(arr[0][1]==arr[1][1]&&arr[1][1]==arr[2][1]&&arr[2][1]=='0')
||(arr[0][2]==arr[1][2]&&arr[1][2]==arr[2][2]&&arr[2][2]=='0')
||(arr[0][0]==arr[1][1]&&arr[1][1]==arr[2][2]&&arr[2][2]=='0')
||(arr[0][2]==arr[1][1]&&arr[1][1]==arr[2][0]&&arr[2][0]=='0'))
{
return 'l'; //电脑赢
}
if(count==0)
{
return 'q'; //平局
}
}
//test.c
#include<stdio.h>#include<stdlib.h>
#include<time.h>
#include<windows.h>
#include"test.h"
void menu() //菜单
{
printf("***********************************\n");
printf("****** 1.play ******\n");
printf("****** 0,exit ******\n");
printf("***********************************\n");
}
void game()
{
char arr[ROW][COL] = {0};
int row = 0;
int col = 0;
int count = 9; //计数器
char c = ' '; //返回值
InitBoard(arr,row,col); //初始化
Display(arr, row, col); //打印空棋盘
while(1)
{
Playermove(arr,row,col);
Computermove(arr,row,col);
//Playermove(arr,row,col);
Display(arr, row, col); //打印玩家和电脑走后的棋盘
c=IsWin(arr,row,col);
if(c=='w')
{
printf("玩家赢\n");
break;
}
else if(c=='l')
{
printf("电脑赢\n");
break;
}
else if(c=='q')
{
printf("平局\n");
break;
}
}
}
int main()
{
int input=0;
while(1)
{
menu();
printf("请选择>: ");
scanf_s("%d",&input);
switch(input)
{
case 1:
game();
break;
case 0:
exit(1);
break;
default:
printf("输入错误!!\n");
break;
}
}
system("pause");
}