三子棋是一个民间的益智小游戏,游戏分为双方对战,双方依次在9宫格棋盘上摆放棋子,率先将自己的三个棋子连成一条线的一方则视为胜利者。下面将说明如何利用C语言在我们的计算机上简单的实现三子棋。
1.逻辑框架设计
在vs上创建两个.c文件test.c和game.c,再创建一个头文件game.h。我们在test.c文件中写游戏的逻辑框架,在game.c文件中写游戏细节,在game.h文件中进行声明。
在test.c文件中建立主函数,并设计调用test()函数。
int main()
{
test();
return 0;
}
继续写test()函数,首先我们采用do while循环建立程序的框架,游戏的开头需要一个游戏菜单,所以设计一个menu()函数放在循环的开头。
void menu()
{
printf("**********************************\n");
printf("******** 1.PLAY ********\n");
printf("******** 0.EXIT ********\n");
printf("**********************************\n");
}
再设计printf()scanf()函数引导玩家,后面采用switch case 语句把玩家输入的数input分为三种情况:输入1进入游戏,输入0退出游戏,输入其他发生错误重新输入。该循环的条件语句为input,如果input为0则程序结束。效果如下:
void test()
{
int input = 0;
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误\n");
break;
}
} while (input);
}
2.游戏内容设计
基本的框架建立好之后,我们要对玩家输入1的情况下的开始游戏进行设计,定义一个game()函数用来写游戏的细节。首先我们需要在game()中创建一个的数组char board[ROW][COL],分别表示9宫格的9个位置,ROW表示行数,COL表示列数,虽然我们设计的是三子棋,但是为了通用性这里用ROW COL 来代替3 3,再将ROW COL在game.h中定义为3 3,这样有利于对ROW COL进行修改。
void game()
{
char board[ROW][COL];
}
然后我们对board数组进行初始化,因为不进行初始化它的值是随机的。在game.c文件中定义一个init_board()函数,将所有元素都初始化为" "。此处我们采用两个for循环简单的解决这个问题。再在test.c的game()中调用这个函数。
void init_board(char board[ROW][COL], int row, int col)
{
int i = 0;
int j = 0;
for (i = 0; i < row; i++)
for (j = 0; j < col; j++)
board[i][j] = ' ';
}
注意:调用game.c中的函数需要在game.h中进行声明。