老板说最近这款游戏很火让我抄,可是我连玩都玩不明白...

引言

哈喽大家好,我是亿元程序员,有小伙伴私信到:

亿哥你好,老板说最近上面这款游戏非常火,让我抄一款。

可是,我连玩都玩不明白,怎么抄?

的确是,这款既像数独又像扫雷的游戏,最近的确爆火,很多主播都在直播解谜。

言归正传,本期带大家一起来实战看看,做这款游戏到底有哪些关键点。

本文源工程可在文末获取,小伙伴们自行前往,有体验链接。

游戏规则

很多小伙伴刚看到这款游戏时,的确比较懵,这游戏到底怎么玩的?为什么能确定那里是小牛?

其实最核心的推理依据就是以下的三个规则:

1. 颜色唯一性

每种颜色区域内,有且仅有 1 只小牛。

所以当你发现某个颜色只有一个格子时,那么这个格子肯定是小牛,如下。

2. 行列唯一性

每一行、每一列,有且仅有 1 只小牛。

因此 当我们找到 1 只小牛时,我们可以大胆地把它的横竖列都标记为x,就像扫雷一样,如下。

3. 非相邻性

小牛的上下左右相邻格子,不能有其他小牛。

顾名思义 ,就是小牛的邻居们,肯定不是小牛,因此我们也可以将当前小牛格子的 8 方向邻居标记为x,如下。

以上就是这个游戏的三个基础的推理依据,我们在游戏开发中应该怎么实现呢?

数据结构与算法

这款 游戏核心的数据结构就是一个N * N的二维网格,要实现这款游戏,我们首要目标就是能够生成 N 个符合规则的小牛。

以上三个基础的规则,除去颜色,它和我们在刚入门学习数据结构与算法时见过的 N 皇后问题十分相似:

N 皇后问题,即在 N×N 的国际象棋棋盘 上放置 N 个皇后,使得任意两个皇后之间不能互相攻击(国际象棋中皇后可以沿行、列、对角线 无限制移动)。

最经典的解法就是回溯法,通过暴力枚举和剪枝,就能得出结果,示例代码如下:

通过计算可得,仅仅 8 * 8,就有 5242 个解,这就不难理解为什么这个游戏的排行榜前十的小伙伴都是 5000 多关了。

道理我都懂,那代码要怎么写?

游戏实战

根据上述内容,再加上颜色的设定,我们想要生成一个关卡就非常简单了,但是这个游戏的关键并不是生成,而是推导。

推导的意思就是,在代码中,模拟玩家的逻辑思维,进行逐步地拆解,从而找出所有的小牛,然后通关,推导过程如下。

1. 找出单色

遍历所有格子,统计每种颜色的格子,逐个颜色扫描,找出未出现过牛和剩余未被标记的数量为 1 的颜色格子。

核心代码如下:

2. 行列排除

先找到 小牛的行和列,然后将该行和列的所有方块都标记为X

核心代码如下:

3. 邻居排除

与上面的行列同理,找到小牛坐标,然后把邻居排除。

获取邻居格子代码如下:

4. 单色占排

根据每个颜色都有一头小牛和同行列只能有一头小牛的规则一起推断,当某个颜色只在某一排出现时,那么这一排的其他颜色都不可能是小牛。

核心代码如下:

5. 整排同色

逐行判断,如果该行全是同一个颜色,则遍历非本行的所有格子,排除颜色一样的格子。

核心代码如下:

6. 多色共占

如果 选定的若干行(或列)里,有至少同样多种颜色在"占领"它们,那么在这几行(列)里,不属于这些占领色的格子一定没有牛,可以标×(图中高亮蓝色部分)。

代码就是枚举「若干行」和「若干列」的组合:

7. 邻居互斥

如果某个格子的邻居中,该颜色只在邻居中出现,其他地方没有,那么这个格子不可能是小牛,可以排除。

核心代码如下:

通过以上的推导方法,整个游戏从关卡编辑生成到解谜通关形成闭环,即可完成到下面的效果。

效果演示

完整效果:

编辑器:

QA

1. 为什么要编辑器,直接每关随机不好吗?

关卡提前编辑好,能够保证关卡能够正常通关,每个玩家体验到的游戏是一样的。

其次就是缓解游戏的压力,因为当关卡去到 10 * 10 之后,生成起来需要耗费时间,甚至还可能没解。

2. 为什么能在直播中受欢迎?

首先游戏给人感觉比较熟悉,有点像数独或者扫雷,降低观众理解门槛。

其次 就是游戏自带智商挑战 的情绪钩子,主播解题时的卡壳/顿悟/翻车 极具戏剧效果,观众会产生我上我也行主播居然解不出来的参与感。

3. 哪里可以玩?

感兴趣 的小伙伴可以通过阅读原文进行体验游戏。

结语

这游戏 实现起来相对容易,主要是对游戏规则的理解,然后转变成代码,数形结合

小伙伴们玩明白了吗?

本文实战完整源码包含编辑器 已集成到亿元Cocos小游戏实战合集(已完结),已经拥有的小伙伴可以直接更新。


我是"亿元程序员",一位有着8年游戏行业经验的主程。在游戏开发中,希望能给到您帮助, 也希望通过您能帮助到大家。

AD:笔者线上的小游戏《打螺丝闯关》《贪吃蛇掌机经典》《重力迷宫球》《填色之旅》《方块掌机经典》大家可以自行点击搜索体验。

实不相瞒,想要个爱心 !请把该文章分享给你觉得有需要的其他小伙伴。谢谢!

推荐文章:

亿元Cocos小游戏实战合集

小伙伴说我的拼图游戏用Mask不能合批...

俄罗斯方块谁不会做......啊?流沙版?

最近很火的一个拼图游戏,老板让我用Cocos3.8做一个...

老板说拼图游戏太卷了,让我用Cocos做个3d版本的...

敢不敢挑战用Cocos3.8复刻曾经很火的割绳子游戏?

Cocos游戏如何接入安卓穿山甲广告变现?

你知道和不知道的微信小游戏常用API整理,赶紧收藏用起来~

相关推荐
谢小飞7 小时前
如何让AI用一个下午开发上架Chrome插件助我摸鱼
前端·chrome
gyx_这个杀手不太冷静7 小时前
OpenCode 进阶使用指南(第一章:Agent 模式)
前端·javascript·ai编程
树上有只程序猿7 小时前
继续堆无用代码,真的不如早点用Low code
前端·低代码
wuhen_n7 小时前
computed 的缓存哲学:如何避免不必要的重复计算?
前端·javascript·vue.js
闲云一鹤7 小时前
本地部署 B 站 IndexTTS2 模型 - AI 文本生语音神器
前端·人工智能
wuhen_n7 小时前
watch 与 watchEffect:精准监听,避免副作用滥用
前端·javascript·vue.js
晓得迷路了7 小时前
栗子前端技术周刊第 119 期 - ViteLand 月度更新汇总、Angular 21.2、Bun v1.3.10...
前端·javascript·vite
鹏多多8 小时前
Flutter使用screenshot进行截屏和截长图以及分享保存的全流程指南
android·前端·flutter
拉不动的猪8 小时前
重温Vue异步更新队列
前端·javascript·面试