在c语言中,若是要实现三子棋游戏,需要我们对c语言的一维和二维数组的使用,函数的声明和调用,以及循环语句分支语句的结合等,这些知识的贯通。
首先,在设计游戏前我们要知道一下三子棋游戏的规则,本质上就是在一个(3x3)的格子棋盘中,两者轮流下棋,每轮可以放置一颗棋子,随后看谁能先将三颗棋子连续放成一条直线,先连成三棋一线者视为胜利,若是棋盘被放满,那就宣布平局。
三子棋所要建立的文件main.c/game.c/game.h
因为三子棋所需要的代码量较多,所以我们需要进行分文件编写,为此我们先建立如上三个文件,main.c用来存放我们的主函数和调试的一些函数,game.c用来存放我们和游戏相关的函数,game.h则是用来调用和声明game.c文件里的函数。
主函数
想一个程序的思路和设计一个程序,依然是从主函数开始, 首先我们建立一个input函数,这个函数的作用就是用来存放我们的输入数字(也就是在主菜单时,对选项的选择),随后我们用do…while循环语句来构成一个主菜单的框架,进入循环后,我们直接先循环一次里面的程序,运行menu函数(主菜单显示),然后接上printf函数提示输入,scanf函数输入我们要选择的选项。switch函数中,input为1,则开始游戏,进入game函数中;若是input为2则退出游戏;若是input为其他选项,则是提示选择错误,重新选择。
menu函数(主菜单)
主菜单界面很简单,运用printf函数来设计出来即可。
game函数(游戏)
game函数中,是整个游戏的一个游玩过程,也是整个三子棋游戏的核心,我们可以看到里面运用了很多我们自己定义的函数,而这些我们自己定义的函数则构成了这个game函数,接下来我们就来看看这些自己定义的函数到底是什么功能。
game.h(头文件)
这个就是我们在game函数中需要用到的所有自定义函数,同时还有最上面的两个宏定义值(为什么这边要用宏定义,简单来说,就是改数据时方便,我们只需要在这里修改后面的值,就可以变化棋盘的行列大小,若是没有这里的宏定义,那我们之后若是想修改棋盘,则需要把整个程序里所有用到ROW和COL的地方都改掉才行,会很麻烦)
而看到下面我们自己定义的函数,分别有棋盘初始化init_board函数,打印棋盘dispaly_board函数,玩家下棋player_move函数,AI下棋computer_move函数,判断平局is_full函数,判断输赢win_loss函数。这些自定义函数分别实现了整个游戏的各个功能,这样也非常直观。
同时我们要注意,game.h中写的这些自定义函数,其实是对我们写的自定义函数的声明,是为了将我们在game.c源文件中写好的自定义函数给调用到我们的main.c源文件中。所以game.h中的这些都是对我们写的自定义函数的声明,而真正编写的自定义函数,也就是对函数的定义都在game.c源文件中。
init_board函数(棋盘初始化)
display_board函数(打印棋盘)
player_move函数(玩家下棋)
computer_move函数(AI下棋)
is_full函数(判断平局)
win_loss函数(判断输赢)