【C语言】简单小游戏

您所在的位置:网站首页 五子棋的算法代码 【C语言】简单小游戏

【C语言】简单小游戏

2024-07-11 05:52| 来源: 网络整理| 查看: 265

引言

(有看过井字棋的小伙伴可以看判断胜负哦!)

从之前刚开始写井字棋的时候,就感觉游戏规则和五子棋类似,当时就像写个五子棋了,现在也算付诸实践了。首先先开始我们的成果展示。

游戏菜单页面

依然是熟悉的配方,和井字棋一样草率的页面,再看看我们的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