图离游--我的牛独是怎么练成的?
前几天,群友“大米饭”说抖音上有一个什么消消消有点像数独,问我能不能做一个。我还没去搜这个游戏,不久,群友小羊就找到一张图,问是不是这个。

从图上可以看到,这是个12x12个格子矩阵,规则有三条,每种颜色一头牛,每行每列有仅有一头牛,小牛不能相邻。第二条规则确实很像数独,我是自己写过数独的,我第一感觉是能做,好,安排!他们问我预期什么时候做完,我看才周二,那就预计本周吧。
晚上下班回家,开始活动!
我已经写过几十个小游戏了,这个游戏实现看起来确实不难。难点只在于题库。这是个典型的NP问题。NP问题:可以在多项式时间内验证一个给定解是否正确的问题,但不一定能在多项式时间内找到解。简单理解,NP问题就是“验证容易,求解难”的问题。这个游戏,像数独,又是放牛的,我给游戏起个名--牛独。(我真是个起名天才)
行,先解决最难的问题,先是数字建模,直接转化为二维数组表达谜面就行,用不同的数字表达不同的颜色。相同数字聚在一起就是一个组。简单的生成谜面方案就是先射箭再画靶。先随机一个答案,然后从答案蔓延出来一个面作为谜面。啪的一下,很快哦。弄个6阶、8阶、10阶、12阶的谜面各1000道,差不多够用了。
谜面有了,把游戏做出来就行了,我拿之前的一笔迷宫的代码稍微改一下就能用了。很快啊,晚上十点一刻,搞定了!直接发群里,开饭咯。“简单小游戏是这样的”。然后我关掉电脑,上床去咯。
几分钟后,大米饭表示:“不对啊,这里少了一条规则,牛牛不能相邻。”
我花了一小会儿才发现我误解了相邻的含义,我以为是上下左右相邻,做的时候,还说真奇怪,规则二包含了规则三。原来这里的相邻是一个点的周围8个位置,就像扫雷的那种定义周围。
行,牛独算是不走寻常路了,不小心弄出了一个市面上完全没有的新游戏。
我躺在床上想了一会儿,新加规则三确实更有意思。原本的牛独版本,我也不想就这么修正掉,那就新加一个游戏叫牛独2吧。凑数这一块,还得是我。说干就干,我爬起来,打开电脑。
牛独二难的地方还是题库,随便弄一个题目是简单的,我希望这个题目只有一个解,就像数独一样。所以步骤是随机一个谜面,然后回溯做题,如果有多解就丢掉,唯一解就留下来。12阶的题比较难弄,我本来希望每个区域至少两个点,实际操作中发现随机命中率太低了,先降低要求,不做区域面积要求,弄出几十关,后面再优化吧。我做游戏是这样的,先做出来一个简单的,等有人玩,提意见,我再改;没人玩就不用那么用力了。
是夜,12点左右,完成了牛独2初版。


