【C语言】简单小游戏 |
您所在的位置:网站首页 › 五子棋的算法代码 › 【C语言】简单小游戏 |
引言
(有看过井字棋的小伙伴可以看判断胜负哦!) 从之前刚开始写井字棋的时候,就感觉游戏规则和五子棋类似,当时就像写个五子棋了,现在也算付诸实践了。首先先开始我们的成果展示。 游戏菜单页面 依然是熟悉的配方,和井字棋一样草率的页面,再看看我们的0选项: 选项1开始游戏 由于五子棋需要一定棋盘大小给玩家发挥空间来提升游戏的趣味性,因此我选择做15*15的棋盘,棋盘出现,玩家先手,游戏就正式开始了!游戏开展后续及细节部分会在正文总体现。 总的来说五子棋的相关逻辑与井字棋差别不大,只是稍微复杂一丢丢,大家可以看看之前井字棋作为查考(传送门:【c语言】简单小游戏———井字棋详细代码及其思路-CSDN博客) 开始编写 分析需求照例我们先分析整个游戏的框架: 先打印出菜单;并且在我们选择开始游戏后出现棋;就可以正式开始游戏了:玩家先手,玩家下一步,电脑下一步,直至有一方胜利,或是整个棋盘下满了都无人获胜,出现平局,就结束游戏,返回结果,然后再重新选择开始游戏或是退出游戏。 开始编码我们正式开始根据需求编码,为了整个项目代码更有条理性,我还是选择test.c,game.c,game.h三个文件来存放代码,其中test.c用来表现整个游戏的整体逻辑并测试;game.h为用来包含需要的头文件,并且声明所用到的函数与符号;game.c用来具体实现我们需要的函数。 首先我们还是将一些要用到的基础头文件放到game.h中 并将game.h作为头文件引用到其他两个文件中,防止编译报错 主题框架开始游戏表现部分的编写 依然先是一个整体的外部逻辑,具体表现为菜单选项的触发。 菜单先是菜单的表现形式 开始游戏关于棋盘行列号的比较多,所以我们直接用宏定义一下: 思路上我们是初始化一个数组来放置棋子,然后打印出棋盘开始下棋,我们一步电脑一步,每次下完一步棋,都要判断一次输赢,如果有结果了则打印出结果,并结束游戏,玩家可以选择是否继续或退出。 每一下完一步棋我们还需要更新打印一次棋盘,将棋子打印出来。 初始化棋盘全部置空留着放棋子(字符)。 打印棋盘打印棋盘时要注意每行分隔符的数量和位置,'|'时从第二列开始的,同样'__'也是从第二行开始的 玩家下棋主要逻辑在于判断下棋位置的合法性,不能下在有棋子的位置,也不能下到棋盘外面去。 电脑下棋电脑下棋直接通过随机数实现(不太聪明,但很合适哈哈哈哈哈)。 判断胜负判断胜负应该是这次最难的点,相较于井字棋,由于棋盘的大小原因,胜负的条件就需要分析的比较透彻。 行列的情况是比较简单的遍历,只是要注意只需要遍历有五个棋子的空间就行了,不必遍历到底。 相比之下的话,斜线的胜负条件就需要分析了。对角线依然是固定的值,比较好些,而非对角线的话就要注意五子一线时的各种情况下,横纵坐标的范围了。不理解的同学可以缩小棋盘穷举一次,应该就很明朗了,因为五子棋的条件,循环只需要行列数减4即可。 平局情况只需要铺满棋盘且不决出胜负。 代码汇总接下来时代码汇总了! test.c game.c game.h相比井字棋,最大的差距还是在胜负的判断条件,是一个很值得思考的点。 当然,优化的方向同样也是电脑下棋的算法。(我觉得也许胜负判断条件也有优化的空间) 最后附一张胜利图片:🕶 再次欢迎各位大佬指点! |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |