首先,一个游戏的制作,必须由大化小,分步完成。

当我们想要制作三子棋小游戏时,必须先搞清楚这个小游戏的逻辑和原理。

三子棋是黑白棋的一种。三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。但是,有很多时候会出现和棋的情况。

因此,怎么来实现这个游戏呢?

显而易见,制作游戏我们需要引用许多库函数,定义许多函数,每个部分的代码实现不同的功能。如果将所有代码写在一个文件中,首先,在我们想知道用了哪些函数,每部分函数对应什么样的头文件时可能就会出现不便的情况。为了减少这些麻烦,我们选择将整个代码规范化,条理化。

因此,我们来进行创建:

  • 一个专门存放所有函数声明的文件,将其命名为game.h(头文件)
  • 一个来编写游戏的实现逻辑,将其命名为game.c(源文件)
  • 一个来编写游戏的测试逻辑,将其命名为test.c(源文件)

好的,现在,就开始来编写程序。

我们的思路为

  • 游戏菜单
  • 游戏主体函数
  • 游戏的实现

 游戏的菜单

首先,进入一个游戏,我们首先看到的就是游戏主界面,也就是菜单,一般来说,菜单应该有以下几个选项:

  1. 开始游戏
  2. 退出游戏
  3. 非法输入

因此,我们就需要创建这样一个menu()函数来实现这样的功能,代码如下:

运行结果如下:

当我们选择进入游戏,也就进入了游戏主要代码的编写。

 游戏主体函数

  1. 棋盘初始化
  2. 棋盘展现
  3. 玩家下棋
  4. 电脑自动下棋
  5. 判断胜负

1.棋盘初始化

首先,我们需要创建一个棋盘,由于棋盘是九宫格,因此我们使用数组来进行创建(由于这里是较为简单的三子棋,因此我们创建数组时可以直接来打印出3*3的数组,但由于我们想让这个游戏的适用面更加广泛,改动时较为容易,我们使用一个函数可以输入自己想要打印的棋盘的大小)

在test.c里创建如下:

char board[ROW][COL] = { 0 };//数组的内容应该是全部空格
InitBoard(board, ROW, COL);//初始化棋牌

在game.c里创建如下:

2.棋盘展现

我们将创建好的棋盘打印出来:

在test.c创建:

DisplayBoard(board, ROW, COL);//打印棋盘

在game.c创建:

3.玩家下棋

为了完成这一功能,我们需要注意以下几点:

  1. 接收玩家所输入的坐标
  2. 判断玩家所输入的坐标所在是否已有落子
  3. 将玩家的棋子落入对应地

代码实现:

在test.c创建:

在game.c创建:

运行结果如下:

 4.电脑下棋

这里,由于游戏实现的智能化水平有限,电脑在下棋时,采用随机下棋的方式,因此坐标随机不确定,那么,如何来创建随机坐标呢?我们使用一个称为时间戳的函数。

我们需要调用以下头文件:

<stdlib.h>
<time.h>
同时,我们还需要使用:

srand((unsigned int)time(NULL)); 来进行初始化
x = rand() % row;
y = rand() %  col;     来进行创建坐标的随机数 
当然,与玩家下棋相一致,我们也需要判断电脑所下的坐标是否被占用,以及将棋子落下。

代码如下,我们在test.c里创建:

同时,在game.c里创建:

运行结果如下:

5.判断胜负

在我们下棋的过程中,由于规则的特殊性,我们需要在玩家和电脑下的每一步后都对比赛的结果进行判断,确保程序的逻辑正确性。

在这里,我们使用Is_win()函数来实现这一功能。

在这一函数中,我们需要实现以下几个逻辑:

要返回四种不同的状态
玩家赢     -->  返回'*'
电脑赢     -->  返回'#'
平局         -->  返回'Q'
游戏继续  -->  返回'C'
首先我们要确立判断函数再整个游戏主体中的位置和作用

我们在test,c中创建的逻辑如下:

同时,我们在实现Is_win()这一函数时,需要注意以下几点:

  1. 判断行
  2. 判断列
  3. 判断对角线
  4. 判断棋盘是否已经放满   -- >  确认游戏是否继续(需要一个Is_full()函数来实现这一功能

我们在game.c里创建is_full()的实现逻辑如下:

接下来是is_win()函数的实现:

注:这里所有创建的函数,我们都会在game.h 里进行声明

游戏的实现

当我们进行完上述步骤买就可以运行代码了:

到这里,三子棋这个小游戏的代码就实现完成了,快去试试吧!

如何制作三子棋小游戏相关推荐

  1. 三子棋小游戏(超详细)

    目录 一.实现三子棋游戏的基本逻辑 二.具体的函数实现 1. 菜单函数 2. 棋盘的实现 2.1 棋盘的初始化 2.2 棋盘的打印 3. 玩家下棋 4. 电脑下棋 5.判断棋盘状态 三. 三个文件 3 ...

  2. 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)

    作者:[南航科院小张 南航科院小张的博客 专栏:从c语言的入门到进阶 学习知识不只是要懂,还要会用:想要找到好的工作,这里给大家介绍一件可以斩获诸多大厂offer的利器–牛客网 点击免费注册和我一起开 ...

  3. 使用C语言编写三子棋小游戏

    使用C语言编写三子棋小游戏: 首先进行分析: 1.需要将游戏实现分为三个部分:头文件,函数功能实现,游戏组合测试. 2.游戏可以循环进行,不必多次打开,可采用 do...while循环结构. 3.游戏 ...

  4. C语言实现三子棋小游戏(编程思路以及代码详解)

    目录 前言 一.三子棋游戏的实现逻辑 二.创建菜单并控制游戏开始或游戏结束 三.创建棋盘并且初始化棋盘 四.打印棋盘并验证打印棋盘和初始化棋盘模块的实现 五.玩家下棋 六.电脑下棋 六.输赢判断 七. ...

  5. C语言小项目--三子棋小游戏

    学了这么长时间的C语言,你是否觉得没有一个没写过稍微长点的代码显得很没有成就感!不怕,今天带你做一个小游戏,领略一下写C和小游戏的快乐.写完记得给自己一个鼓励哦! 一.三子棋小游戏 想必大家都玩过三子 ...

  6. vs2010c语言小游戏,用C语言写一个三子棋小游戏(用VS2010实现,加强版)

    前几天写了一个三子棋小游戏,但是比较简单,因为以前写的游戏棋盘只能是3x3那么大.今天对那个程序做了两点改进: 1.现在可以实现在任意大小的棋盘上下棋了. 2.因为棋盘可能变大,为了玩家方便确定坐标, ...

  7. 呆头呆脑的电脑----三子棋小游戏(C语言版)

    目录 1.需求分析 2.程序架构 3.代码实现(分函数呈现) (1)主函数代码实现 分析: 异常处理: (2)菜单函数的实现 分析: (3)游戏函数的实现 分析: (4)棋盘的初始化 分析: (5)棋 ...

  8. 趣讲用c语言实现三子棋小游戏

    目录 直接先看看最后运行效果吧 三子棋如何设计的,及其步骤 1,源文件已经头文件的创建 2.创建主函数 3.test函数的创建 4.game函数的创建和运行 5.五个函数的实现 a.init_boar ...

  9. 三子棋小游戏带你走进编程世界(c语言版)

    目录 一.游戏实现的整体思路 二.实现游戏大体框架 二.游戏函数的实现 1.初始化键盘 2.打印棋盘 3.下棋及胜负判断 (1)玩家下棋 (2)电脑下棋 (3)判断输赢 三.结语及源码 三子棋想必大家 ...

最新文章

  1. Setting the Reply-To Header in an Email using CDONTS.NewMail Object and CDO Message
  2. 卷积神经网络失陷,CoordConv来填坑(附代码&视频)
  3. easyui 添加 自定义图标
  4. 美国互联网广告07年总开支255亿美元, 增长27%
  5. 中国金融体系(金融机构,金融市场,金融基础设施)
  6. 数据结构与算法-- 二叉树后续遍历序列校验
  7. FPGA RTL级设计原则
  8. java怎么给框架添加背景图,java里怎么给Container添加背景图片
  9. 小程序picker下拉框选择时间,只需要年和月
  10. C++ 11 Lambda表达式
  11. 取经学道真经验——你听过这么享受的培训吗
  12. oracle判断字符串以什么开头_oracle存储过程 判断字符串开头
  13. react 翻书效果_React实现翻页功能
  14. 全国2013年最新电子地图矢量数据超图格SGD、MAPINFO、GST、SMW、SHP格式等
  15. 《道德经》与 (更新中)
  16. P1359 租用游艇 (线性dp
  17. ❤️ 炒 股 实 战丨原 地 起 飞 ❤️
  18. LibSVM中的松弛变量和惩罚因子
  19. 怎么恢复路由器出厂设置?安全上网看这里
  20. 九齐单片机 NY8B062D 之TIM0的使用

热门文章

  1. 解决ie8下onpropertychange事件间歇性失效的问题
  2. java之class文件解析
  3. 使用NtUserBuildHwndList遍历窗口_win7x64
  4. java计算机毕业设计学生管理系统MyBatis+系统+LW文档+源码+调试部署
  5. java接受JSON字符串
  6. 想成为“牛人”的你,知道这些“壁垒”吗? ——论技术壁垒、时间壁垒和成果壁垒
  7. Hbase下载安装部署详细步骤
  8. FreeSwitch配置
  9. H3C备份设备配置方法
  10. bat批处理adb screencap 获取安卓设备截图以日期为文件保存至电脑