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;
? }