前言
本期带大家实现三子棋小游戏,认真看完一定会有所收获本期的重点并不在于游戏有多好玩,主要是让大家清楚大程序该如何用多个文件分装来写,具有完成较大程序的思维
主函数框架
我们来看以下最终的完整程序应该长什么样子
1. 一开始需要一个菜单,菜单具有两个选项,选择1开始游戏,选择2结束游戏
2. 其次我们需要定义字符二维数组来存储棋盘状态
这就是主函数的框架
注:ROW COL 为标识符常量,方便以后更改直接在定义时更改一次即可
通常用switch来实现对点分支的判断,若输入是0,则while循环不会执行,满足了输入0退出的条件
主要来分析如何实现game函数
从游戏界面可以看到以下特点
- 首先会在屏幕上显示一个空棋盘
- 玩家下棋
- 打印棋盘
- 判断输赢 出结果转到8 没出结果转到5
- 电脑下棋
- 打印棋盘
- 判断输赢 出结果转到8 没出结果转到2
- 打印结果
头文件
将主函数中出现的函数以及主函数的需要用到的头文件在头文件中声明,最后在主函数中引用头文件就可以实现对函数的调用
函数定义源文件
我们现在来看每个函数如何实现
1. 打印棋盘
打印棋盘之前我们需要先将字符数组全部初始化为空格
(后面会说如果不初始化为空格会发生什么)
为什么要初始化棋盘?
棋盘长这个样子
如果不初始化二维数组为空格,则数组每个元素初始值未知,这样会导致打印出来的棋盘非常的丑
棋盘由两部分组成
1. 棋子--》用二维数组存储
2. 分割线
每一行打印空格 棋子 空格 | 空格 棋子 空格 | 空格 棋子 空格来 最后一颗棋子的后面无需|
第二行应该打印----,4个-,循环打印COL次,最后一行无需打印
2. 玩家下棋函数
首先在屏幕上提示玩家输入坐标玩家输入的坐标用*表示,电脑输入的坐标用#表示
玩家输入的坐标应该存起来并且打印在屏幕上
玩家输入的坐标应该满足两个条件
1. 输入的坐标应该在九宫格范围内
2. 输入的坐标不能有棋子
3. 若不能都满足条件则应当重新输入
3. 电脑下棋函数
对于电脑,我们只需要将它下棋的范围控制在有效范围内,无需对电脑进行提示
我们只需要判断电脑下棋的位置之前是否有棋子
注:rand函数表示随机取一个0-RAND_MAX(32767)范围的数,对它模3表示随机取0-2的数
4.判断输赢函数
每下一次棋,我们需要判断输赢,如果分出输赢,我们需要知道谁赢,没分出输赢,是平局还是继续下棋
判断输赢函数的结果有4种
1. 玩家赢
2. 电脑赢
3. 平局
4. 继续
如果玩家赢,直接返回玩家下棋字符
如果电脑赢,直接返回电脑下棋字符
如果平局,返回字符Q
如果继续,返回字符C
最后根据判断函数结果函数的返回值将结局打印出来就行,这是在主函数中实现的
最后
看到最后,如果您觉得对您有帮助,请不要吝啬手中的赞,这对我来说很重要,也是我创作的动力,如果您觉得哪里说的不清楚或者有问题,欢迎评论区留言