| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 【手把手带你搞定】C语言实现三子棋游戏,让你的代码有趣起来(超详细教程,从思路到代码,快码起来!) -> 正文阅读 |
|
[C++知识库]【手把手带你搞定】C语言实现三子棋游戏,让你的代码有趣起来(超详细教程,从思路到代码,快码起来!) |
在学习完函数和数组的基本使用之后,我们应该把所学知识应用起来。其中,让我们的代码生动有趣起来的方法就是用它来写一个小游戏啦! 今天我们就来写一个简易的三子棋游戏吧! 什么是三子棋游戏首先,我们还是简单地介绍一下简单的三子棋(tic-tac-toe)游戏吧~ 后来才知道,原来是三子棋就是我小时候经常和小伙伴画着玩的井字棋,可能你光听名字也不知道这是啥,但是我猜你看到图片就明白了。上图! 当当当当~
哈哈哈哈哈相信看完上图大家应该就都明白三子棋是怎么玩的了吧~那我们接下来就进入正题:C语言实现三子棋游戏。 分析程序员虽然是敲代码的,但是代码前的分析尤为重要噢~ 我们需要先分析一下整个游戏的逻辑以及实现的方式,才能更加顺利的写出好的代码噢! 首先,我们在VS2019中建立一个新的解决方案。 首先,像我们之前写过的猜数字游戏(点击此处可跳转)一样,我们要先给出一个菜单,让用户进行选择(玩或者不玩),并且用户玩完之后可以再次进行选择。 然后,我们要开始实现三子棋游戏。 那么具体如何实现呢? 我们先看看下图: 下棋又分为玩家下棋和**电脑下棋 **,玩家的棋子为“*”,电脑的棋子为“#”,并且我们需要把下棋的数据记录下来,确保落了子的地方不会再被落子。 最后每落一子我们都要对结果进行判断。 而每一次判断可能出现的结果有4种:玩家赢、电脑赢、平局和游戏继续。如果游戏继续,则继续下棋,否则,输出游戏结果,返回到游戏菜单。 以上就是三子棋的整个游戏实现逻辑,我们将其中的重点总结如下:
代码实现菜单菜单是实现和之前的猜数字游戏一样,这里就直接给出代码了,如果有想要了解这一部分的代码是如何写的,可点击此处跳转到猜数字游戏的文章中了解。
程序运行如下: 打印井字格创建二维棋盘数组由于我们的棋盘是一个九宫格,并且在这个九宫格中还会存放游戏中下棋的数据(哪个位置放玩家的棋子,哪个位置放电脑的棋子)。 所以,这里我们应该创建一个3×3的二维数组。 由于玩家和电脑的棋子是用“*”和“#”来表示的,所以我们创建一个字符类型的数组。 因此,我们不妨在头文件中将行和列分别定义为一个常量,这样代码的可读性将会更高,并且以后如果要对行和列进行更改,就可以直接在头文件中对相应的值进行更改。 初始化棋盘数组接下来我们要对棋盘数组进行初始化。 在最开始没有下棋的时候,我们看到的数组内容是空的,所以我们可以认为初始化棋盘的时候,我们在里面放的是一空格,等到玩家或者电脑下棋的时候,再将其中的值覆盖为“*”或者“#”。
打印棋盘在将数组初始化之后,我们就要打印棋盘了。 首先我们先把打印棋盘函数的调用写出来,并将参数陈传进去: 最后完成打印棋盘的函数实现:
运行程序,可以看到棋盘被很好地打印出来了。 下棋打印完棋盘之后,我们就要开始下棋了,这里的下棋分为玩家下棋和电脑下棋。分别封装为两个函数。 下棋的实现其实就是在棋盘的对应位置中放入代表玩家的的棋子的字符“*”或者代表电脑的棋子的“#”。所以我们还是要将数组的地址以及数组的行和列传参给函数。 但是下棋不是只下一次,如果双方都下完一步棋,米有分出胜负,则要继续走下一步,所以这里我们应该把下棋这一部分的代码放在一个循环里面。 玩家下棋在玩家下棋的函数中,我们要实现的关键有以下几点:
玩家下棋的函数代码如下:
注意玩家下完棋之后,要让玩家下的棋被看到,所以我们要打印一下棋盘,同理电脑电脑下棋之后也要打印棋盘。 电脑下棋那么电脑下棋应该怎么实现呢? 首先,应该生成一个坐标。 而电脑生成的坐标应该是随机的,所以这里我们要先生成随机值。
如果没被占用,则在该位置中放入“#”。 因此,生成随机坐标的代码块也需要放到一个循环中。 电脑下棋的函数代码如下:
运行代码: 判断结果每次下完棋,我们都应该对棋局的结果进行判断。 而棋局的结果分为四种:玩家赢、电脑赢、平局和继续。其中若得到前三种结果,游戏结束,否则游戏继续。 我们可以写一个返回类型为char的函数,如果函数返回“*”,则代表玩家赢了,如果返回“#”则说明电脑赢了,如果返回“q”则是平局,返回“c”则继续下棋。
如果有三个相邻元素相同,说明赢家已经产生了。我们只需要把相同的元素(字符)返回去,便可轻松得到对应的赢家 如果没有赢家产生,说明只剩下平局和继续两种情况,我们可以通过调用一个 IsFull( ) 函数来判断棋盘是否已经放满。 这里就直接上代码了:
下面让代码跑起来看看~~(只截最后一部分啦!) 完整代码走到这里,三子棋游戏的代码咱们就写完啦~ 你学会了吗? 如果你觉得本文对你有用,记得点赞收藏加关注噢~ 下面我把完整的代码截图一份放这里,并且在gitee中上传三子棋的完整代码,欢迎大家自取~ game.h文件: 总结这是我们入门C语言之后写出的第一个比较长的程序。通过对三子棋游戏的实现,我们对于这两块内容的理解应该更加深刻。 下面给出几点总结:
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/27 6:57:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |