【从0到1手把手带你学C语言】详解三子棋

本文介绍了如何使用多个文件来编写一个三子棋小游戏,重点在于程序的结构和组织,而非游戏本身。文章详细讲解了主函数的框架,包括菜单选项、棋盘状态的存储,以及使用switch进行逻辑控制。此外,还阐述了棋盘的打印、玩家和电脑下棋的函数实现,以及判断输赢的逻辑。文章强调了初始化棋盘的重要性,并提供了判断游戏结果的四种情况。
摘要由CSDN通过智能技术生成

前言

本期带大家实现三子棋小游戏,认真看完一定会有所收获本期的重点并不在于游戏有多好玩,主要是让大家清楚大程序该如何用多个文件分装来写,具有完成较大程序的思维

主函数框架

我们来看以下最终的完整程序应该长什么样子
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1. 一开始需要一个菜单,菜单具有两个选项,选择1开始游戏,选择2结束游戏
2. 其次我们需要定义字符二维数组来存储棋盘状态

这就是主函数的框架
在这里插入图片描述
注:ROW COL 为标识符常量,方便以后更改直接在定义时更改一次即可
通常用switch来实现对点分支的判断,若输入是0,则while循环不会执行,满足了输入0退出的条件
主要来分析如何实现game函数
从游戏界面可以看到以下特点

  1. 首先会在屏幕上显示一个空棋盘
  2. 玩家下棋
  3. 打印棋盘
  4. 判断输赢 出结果转到8 没出结果转到5
  5. 电脑下棋
  6. 打印棋盘
  7. 判断输赢 出结果转到8 没出结果转到2
  8. 打印结果

在这里插入图片描述

头文件

将主函数中出现的函数以及主函数的需要用到的头文件在头文件中声明,最后在主函数中引用头文件就可以实现对函数的调用
在这里插入图片描述

函数定义源文件

我们现在来看每个函数如何实现

 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
在这里插入图片描述
最后根据判断函数结果函数的返回值将结局打印出来就行,这是在主函数中实现的

最后

看到最后,如果您觉得对您有帮助,请不要吝啬手中的赞,这对我来说很重要,也是我创作的动力,如果您觉得哪里说的不清楚或者有问题,欢迎评论区留言

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值