前言
学习新知识固然重要,但如何运用所学的知识解决生活中的问题更为重要。只会学而不会用,何异于纸上谈兵。那么就让我们来看看如何用C语言来实现一个简单的三子棋吧!
目录
一点建议
由于实现三子棋的代码相比我们学习时所用的代码要长得多,因此我们最好把不同的游戏功能分装到不同函数中分别实现,并且可以分装多个源文件和头文件,方便调用函数,这样我们的代码就不会显得很杂乱,也方便后续对代码的维护和更新。
如图,当我在一个自定义头文件中包含了所需的所有头文件并声明了所有所需的函数时,我只需要在源文件中包含该自定义头文件,即可调用我需要的所有函数。
一、游戏菜单
1.菜单界面
我们知道,当我们打开游戏,映入眼帘的应该是游戏菜单,在菜单里可以选择进行游戏或者退出游戏,那么我们就需要用C语言写一个简易的菜单界面。
如图,用printf函数打印出一个简易的菜单界面。
2.开始或退出游戏
如菜单所展示的,我们如何使玩家选择开始或退出游戏呢?这时我们可以分装一个函数,专门用于控制游戏的开始与退出,例如test函数
test函数中含有一个循环体,其实很好理解,当我们玩完一把游戏后就会回到菜单重新选择开始或者退出游戏,写成循环就可以使玩家在不退出游戏的情况下连续开始游戏。那么我们来分析循环内容,首先,调用menu函数,打印一个菜单,然后用scanf函数让玩家选择开始或者结束,这时候我们可以分为三种情况,例如,当玩家输入1时,说明他想开始游戏,那么判断input等于1则进入game函数(game函数为游戏内容,如图中“游戏开始”);还有可能input等于2,说明玩家想退出游戏,那么我们用break跳出循环,游戏结束;最后一种情况,input既不等于1,也不等于2,说明输入错误,那么程序应该给出反馈并让玩家重新选择。
这样一来,三子棋小游戏的菜单就做好了。
二、游戏内容
1.棋盘
初始化棋盘
三子棋的棋盘相信大家都很熟悉,一个九宫格和两种不同的棋子,那么在C语言中实现的三子棋大致如下图
由于下棋是一个动态过程,我们并不能只考虑打印棋盘,还要考虑如何将棋子放上棋盘。我们看到,没放棋子的地方都是空格,而棋子可以用字符来代表,那么我们可以定义一个字符数组来代表棋子, 而棋盘为三行三列,正好可以用一个三行三列的二维数组来代表棋子。那么我们创建一个二维数组。由于游戏开始时棋盘的九个位置均为' '(空格),所以我们应该将数组的所有元素初始化为' '。我们在函数init中实现