因为代码有些多,所以使用了头文件来方便理解。
void initial(char arr[ROW][COL],int row,int col) //初始化棋盘函数
{ for(row=0;row<ROW;row++) {for(col=0;col<COL;col++){arr[row][col] = ' ';printf("%c",arr[row][col]);if(col<COL -1)printf(" | ");}printf("\n");if(row<ROW -1)printf("————————\n");}
}
void player(char arr[ROW][COL],int row,int col) //用户下棋函数
{printf("请输入棋子坐标>:");scanf("%d %d",&row,&col);while(1){if((row>=1 && row<=ROW+1) && (col>=1 && col <=COL+1)){if(arr[row-1][col-1] ==' '){ arr[row-1][col-1] = '*';break;}else if(arr[row-1][col-1] =='#'){printf("该位置已被对方占用,请重新选择!\n");printf("请输入棋子坐标>:");scanf("%d %d",&row,&col);}else if(arr[row-1][col-1] =='*')printf("这个地方那你已经下过了,换个地方吧!\n");else printf("你是怎么做到显示这个行代码的??");}elseprintf("坐标输入错误,请重新选择!\n");printf("请输入棋子坐标>:");scanf("%d %d",&row,&col);}
}
void printing(char arr[ROW][COL],int row,int col) //打印棋盘的函数。 {for(row=0;row<ROW;row++) {for(col=0;col<COL;col++){printf("%c",arr[row][col]);if(col<COL -1)printf(" | ");}printf("\n");if(row<ROW -1)printf("————————\n");} }
void computer (char arr[ROW][COL],int row,int col) //电脑下棋函数。 { while(1){ row = rand()%3;col = rand()%3;if(arr[row][col] == ' '){arr[row][col] = '#';break;}} }
int windefeat(char arr[ROW][COL],int row,int col) //判断输赢函数。 {int count = 0;for(row=0;row<ROW;row++){if(arr[row][0] == arr[row][1] && arr[row][1]== arr[row][2]){if(arr[row][0] =='*')return 1;else if(arr[row][0] == '#')return 0;}}for(col=0;col<COL;col++){if(arr[0][col] == arr[1][col] && arr[1][col] ==arr[2][col]){if(arr[0][col] == '*')return 1;else if(arr[0][col] == '#')return 0;}}if(arr[0][0] == arr[1][1] && arr[1][1]== arr[2][2] ){if(arr[0][0] == '*')return 1;else if(arr[0][0] == '#')return 0;}if(arr[0][2] == arr[1][1] && arr[1][1]== arr[3][0] ){if(arr[0][2] == '*')return 1;else if(arr[0][2] == '#')return 0;}for(row=0;row<ROW;row++){for(col=0;col<COL;col++){if(arr[row][col] ==' ')count++;}}if(count == 0){ return 2;}return 9;}
//这是源文件,里面存放着三子棋所需要的函数。
//这是源文件,里面存放着三子棋所需要的函数。
//这是源文件,里面存放着三子棋所需要的函数。//函数是在在 int main() 开始
#include"game.h"
#include<stdlib.h>
#include<time.h>
void menu() //menu是菜单函数。{
printf("*******************************\n");
printf("******1:game 0:exit*******\n");
printf("*******************************\n");}
int option(int x) //开局选择是否进入游戏的函数。
{
if(x==1)
return 1;
if(x==0)
return 0;
else
return 2;
}void game() //游戏程序的实现函数。
{
char arr[ROW][COL];
initial(arr,ROW,COL); //棋盘的初始化。
do
{
player(arr,ROW,COL);//玩家下棋函数。
printf("胡图图下棋:\n");
printing(arr,ROW,COL);
if(windefeat(arr,ROW,COL)==0)//判断输赢函数。
{
printf("牛爷爷赢了!\n");
break;
}
if(windefeat(arr,ROW,COL)==1)
{
printf("胡图图赢了!\n");
break;
}
if(windefeat(arr,ROW,COL)==2)
{
printf("平局了\n");
break;
}
printf(" \n");//为了把牛爷爷和胡图图的棋盘分开,使得更明显。
printf(" \n");
printf(" \n");
printf("牛爷爷下棋:\n");
computer(arr,ROW,COL); //电脑下棋函数。
printing(arr,ROW,COL);
if(windefeat(arr,ROW,COL)==0) //判断输赢函数。
{
printf("牛爷爷赢了!\n");
break;
}
if(windefeat(arr,ROW,COL)==1)
{
printf("胡图图赢了!\n");
break;
}
if(windefeat(arr,ROW,COL)==2)
{
printf("平局了\n");
break;
}}
while(1);}
int main()
{
char arr[ROW][COL];
int a;
srand((unsigned int)time(NULL));
do
{
menu();
printf("请选择>>:");
scanf("%d",&a);
switch(option(a))
{
case 0:
printf("!结束游戏!\n");
break;
case 1:
printf("!开始游戏!\n");
game();
break;
default:
printf("输入错误,请重新输入!\n");
break;}}
while(option(a));return 0;
}