「羊了个羊」有多恶心?
能逼程序员气到撸起袖子自己上……
这两天,GitHub 上就出现这么一个仿制版,名曰「鱼了个鱼」。

不同于以「极低通关率」肝死玩家的原版,此版作者放出话来——
没广告!可自定义关卡和图案!道具无限!。
甚至可以定制出这(离)样(谱)的界面:

目前,该项目已登 GitHub 热榜,获 297 个 Star。(链接已附在文末)

比「羊」更让人舒适
先看看这款「鱼了个鱼」体验如何。
从最简单模式开启,简直不要太 Easy,道具都无需使用。

再看中等和困难模式,稍有难度,还好有道具!
原版的洗牌、撤回、移出可无限次使用,还有更多玄妙功能。
比如透视,能看到最下方两列叠起来图案依次是什么,这感觉,相当于斗地主把最后三张看完了。

再比如圣光,能把一大堆图案下面的图层从灰变白,看得更清楚。

最逆天的还是破坏功能,直接消掉 3 个同样图案:

也就是说,一直狂按这个道具能直接通关。

值得一提的是,通关后祝贺画面是这个:

建议作者优化下前端,直接换成这个:

怒而自制必通关版
据作者介绍,自己也是玩「羊了个羊」几十次,其间,他用尽道具,看了几十遍借贷广告,向富家千金反复求婚,仍然过不了第二关——
他发现事情不对劲。
由于方块生成完全随机,那越到后期,越来越多方块叠压在一起,可选方块变少,自然越来越难,经常无解也是常事。
另一方面,正是极低的通关率让每个「自以为必胜」的玩家上头得不行,形成了上瘾感。

于是……他怒而自制一个必能通关的版本。
要求嘛,务必无广告,务必道具无限,要能自定义难度和图案,那更是一件美事儿。
具体到原理,作者提出四大纲领。
首先,游戏全局参数设置上,需要将槽位数量、层数等变量抽取成统一的全局变量,每当修改一处,系统自动适配,此外,作者还开放了参数自定义——
嫌槽位不足?可以自己多加一个!

其次是整体网格设计。
为了能快速做出游戏,作者直接将画布分为 24 × 24 的虚拟网格,类似一个棋盘——
每个网格又被划分成 3 × 3 的小单元,各层图案生成时,会相互错开 1-2 个单元,形成层层交叠、密密麻麻的样子。

第三步是设计随机生成块的图案和坐标。
先根据全局参数计算总块数,游戏难度越高,块数和相应层数也越多,然后作者用 shuffle 函数打乱存储所有动物图案的数组,再依次,把图案重新填充到方块中。
至于如何生成方块坐标,直接让程序随机选取坐标范围内的点,同时随层级变深,坐标范围也越来越小,造成一种——
越往深了去,图案越拥挤,难度相应越高的效果。

△ 大致分布规律就是越「深」层越「挤」
最后,设定上下层块与块的关系。
作者先给每个块指定一个层级属性,随机生成时,给相互重叠的块绑定层级关系,确保消掉上层块,才能点击下层块。
基于上述思路,作者熬夜爆肝几个小时,就把游戏雏形做出来了,还放到 GitHub 上将代码开源——
他感慨道,总算是满足了自己的通关夙愿。

作者介绍
事实上,「鱼了个鱼」项目作者「程序员鱼皮」已小有名气。
据其个人公开资料显示,「程序员鱼皮」98 年出生,现在鹅厂,从事全栈应用开发,同时,也是腾讯云开发高级布道师。
工作之外,鱼皮利用业余时间做了很多入职大厂经验、技术干货和资源分享,据他称,在校期间就带领工作室建设了几十个校园网站。
原文地址:http://www.myzaker.com/article/632956b2b15ec0315c44d7dd