三子棋游戏的思路分享
今天,我很高兴和大家分享一下我练习三子棋的感受与一些思路。
- 首先我们先建一个工程,这次与往常不一样,为了把代码细分清楚,建立一个头文件(game.h)(用于一些头文件的包含,以及一些函数的声明),再建立两个源文件(game.c和test.c)(一个是游戏代码即一些函数部分,一个是测试部分主要是一些外部框架)。
- 然后先搭建一个框架,如下图
这个菜单部分我们可以通过一个menu()来实现,代码如下:
void menu()
{
printf("******************\n");
printf("*** 1.play ***\n");
printf("*** 0.exit ***\n");
printf("******************\n");
}
此外,我们通过输入的数字来进行参与游戏,是1则参与游戏,是0则结束游戏,如果输入其他数字则打印输入错误,重新输入。大家看到这个根据输入的数字来进行不同的操作,有没有想到switch语句呢?我们就通过这个来实现它,test.c源文件中的代码如下:
int main()
{
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);
return 0;
}
让我们先试一下,看看能不能实现这个功能。
大家看到这个是不是还是觉得很简单呢,让我们继续挖深吧!
3.现在就是game()内部这个大工程了。
(1)因为我们设计的是三子棋,所以我们看成是一个字符数组,三行三列,因为这是棋盘,我们直接把数组名写成board,board[ROW][COL],
我们在这里不直接将数组的行列数直接写出来,可以进行宏定义,这样有助于兼容性,如果下次做五子棋或者其他形式,可以直接在宏定义中修改一下信息。我们在game.h头文件中的代码如下:
#define ROW 3
#define COL 3
我们只需要在各个源文件中加上
#include "game.h"
即可。
(2)我们对棋盘数组进行初始化,令每一位都是空格。在game.h我们写出一个函数InitBoard()声明
//初始化棋盘
void InitBoard(char board[ROW][COL], int row, int col);
然后我们就可以在game.c中实现这个函数了。
void InitBoard(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] = ' ';
}
}
}
(3)初始化棋盘后,我们先打印一下棋盘,和上面的初始化棋盘类似,先声明一下
//打印棋盘
void DisplayBoard(char board[ROW][</