item.c
#include"game1.h"
void order() {
printf("###################\n");
printf("##1.enter 0.back##\n");
printf("###################\n");
}
void game() {
char a[M][N]={0};//初始化数组,将数组棋盘全部置为数字0
char ret='0';
//打印棋盘
itisdisplay(a,M,N);//二维数组也可以用数组名来传
itisplay(a,M,N);
ret=itisconsult(a,M,N);//判断当前局势的结果
//#--玩家赢了
//*--电脑赢了
//Q--平局
//C--游戏继续
while(ret=='C') {
itisplay(a,M,N);
ret=itisconsult(a,M,N);
switch(ret) {
case '#':
printf("玩家赢啦!\n");
break;
case '*':
printf("电脑赢啦!\n");
break;
case 'Q':
printf("平局\n");
break;
}
}}
int main() {
srand((unsigned)time(NULL));
int input=0;
do {
order();
printf("请输入选项:》\n");
scanf("%d",&input);
switch(input) {
case 1:
printf("进入游戏中......\n");
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误,请重新输入\n");
break;
}
} while(input);
}
game.h
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define M 3
#define N 3
void itisdisplay(char a[M][N],int m,int n);
void itisplay(char a[M][N],int m,int n);
char itisconsult(char a[M][N],int m,int n);
game.c
#include"game1.h"
//打印棋盘
void itisdisplay(char a[M][N],int m,int n) {int i=0;
int j=0;
printf("\n");
for(i=0; i<m; i++) {
for(j=0; j<n; j++) {if(j==n-1) {
printf(" %c ",a[i][j]);
} else
printf(" %c |",a[i][j]);
}
if(i<m-1) {
printf("\n");
for(j=0; j<n; j++) {
if(j==n-1) {
printf("---",a[i][j]);
} else
printf("---|",a[i][j]);
}
}//先打印行再列
printf("\n");
}
printf("\n");
}
//单局玩法
void itisplay(char a[M][N],int m,int n) {
printf("玩家下:\n");
int in1=0,in2=0;
while(1) {
scanf("%d %d",&in1,&in2);
if(in1>m||in1<1||in2<1||in2>n) {
//判断输入是否合法
printf("输入错误,请重新输入\n");
} else {
a[in1-1][in2-1]='#';
itisdisplay(a,M,N);
break;
}
}
printf("电脑下:\n");
while(1) {
int num1=rand()%3;//0,1,2,
int num2=rand()%3;
if(a[num1][num2]!='#') {
a[num1][num2]='*';
break;
}
}
itisdisplay(a,M,N);
}//单局玩法
char itisconsult(char a[M][N],int m,int n) {
int i=0;
int j=0;
//玩家赢
for(i=0; i<m; i++) {
if(a[i][1]==a[i][2]&&a[i][2]==a[i][0]&&a[i][1]=='#') {
//行满三
// printf("玩家赢了!\n");
return a[i][1];
break;
} else if(a[0][i]==a[1][i]&&a[1][i]==a[2][i]&&a[i][1]=='#') {
//列满三
// printf("玩家赢了!\n");
return a[1][i];
break;
} else if((a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&a[1][1]=='#')||(a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&a[1][1]=='#') ) {
//斜对角
// printf("玩家赢了!\n");
return a[1][1];
break;
}
//电脑赢
for(i=0; i<n; i++) {
if(a[i][1]==a[i][2]&&a[i][2]==a[i][0]&&a[i][1]=='*') {
//行满三
// printf("电脑赢了!\n");
return a[i][1];
break;
} else if(a[0][i]==a[1][i]&&a[1][i]==a[2][i]&&a[i][1]=='*') {
//列满三
// printf("电脑赢了!\n");
return a[1][i];
break;
} else if((a[0][0]==a[1][1]&&a[1][1]==a[2][2]&&a[1][1]=='*')||(a[0][2]==a[1][1]&&a[1][1]==a[2][0]&&a[1][1]=='*') ) {
//斜对角
// printf("电脑赢了!\n");
return a[1][1];
break;
}
}
//平局
int flag=0;
for(i=0; i<m; i++) {
for(j=0; j<n; j++) {
if(a[i][j]==0) {
flag=1;//没有布满则游戏继续
}
}
}
if(flag==1) {
return 'C';
} else {
return 'Q';
}}
}