9 月 23 日,朋友圈中莫名出现了一些羊。在某位同学的介绍下,我开始了探索这个神奇的游戏世界。
这不是一个过关秘籍~
过关秘籍?
昨天晚上我尝试了很多次,但是,没一次成功了。虽然我一直在竭尽全力找出能够解决问题的算法。
整体布局
根据该游戏的 GUI 布局,可以分为四个部分:
- A A A 区是卡牌的主要堆叠区,大致呈无规则散列状态,层数较少,但是可以预知下方的卡牌花色。
- B B B 区是卡牌的层叠区,聚集了若干摞卡牌,层数较多,只能知道当前翻开的卡牌的花色,无法预知下一张的花色。
- C C C 区是槽位,数量为 7 7 7。
- 最下方的是道具区,这里不做讨论。
游戏规则
当且仅当 7 7 7 个槽位没有溢出,且有 3 3 3 个卡牌有相同花色,那么这三个卡牌即完成了一次匹配,从槽位消失,并且腾出三个空闲槽位。
注意:该槽位不是栈结构,不遵循后进先出的规则,这就降低了游戏的难度。进入槽位的卡牌会按照花色聚集,举例来说:
游戏过程中先后进入了三个卡牌,顺序如图 ( 1 , 2 , 3 ) (1,2,3) (1,2,3),在此情况下,如果在插入一个“火堆”的卡牌,插入位置将会是在 1 1 1 和 2 2 2 之间,而不是 3 3 3 之后。
过关?挺难…
当我们选中一个卡牌之后会出现如下情况:
- 不能够成一次成功匹配,并且不能增加一个新的卡牌;
- 不能构成一次成功匹配但是能够在 A A A 区增加 1 1 1 个新的卡牌,也就是该卡牌下方压住的那个卡牌会显示出来;
- 不能构成一次成功匹配但是能够在 A A A 区增加 2 2 2 个新的卡牌,也就是该卡牌下方压住的 2 2 2 个卡牌会显示出来;
- 不能构成一次成功匹配但是能够在 B B B 区增加 1 1 1 个新的卡牌,也就是该卡牌下方压住的那个卡牌会显示出来;
- 能够成功匹配,但不能增加一个新的卡牌;
- 能够成功匹配,且能够在 A A A 区增加 1 1 1 个新的卡牌,也就是该卡牌下方压住的那个卡牌会显示出来;
- 能够成功匹配,且能够在 A A A 区增加 2 2 2 个新的卡牌,也就是该卡牌下方压住的 2 2 2 个卡牌会显示出来;
- 能够成功匹配,且能够在 B B B 区增加 1 1 1 个新的卡牌,也就是该卡牌下方压住的那个卡牌会显示出来。
显然,情况 5 , 6 , 7 , 8 5,6,7,8 5,6,7,8 优于情况 1 , 2 , 3 , 4 1,2,3,4 1,2,3,4。所以在游戏过程中需要尽可能让自己的一次进入槽位的操作是较优的情况。
并且考虑到 A A A 区和 B B B 区的卡牌排列方式不同, B B B 区的不确定性更大,所以当某一次卡牌排列花色相同的组有多个的时候,优先选择 B B B 区包含卡牌数量更多的那一组。举例如下:
在图示状态下,选择 c o r n corn corn 组应该会优于 g r a s s grass grass 组,因为这种选择会降低不确定度。
但是这种做法明显还有另一个缺陷,就是可能存在这样一种情况,选择 g r a s s grass grass 组后新出现的卡牌会组成另外的一组成功匹配。
个人认为,当卡牌较多时,选择 c o r n corn corn 组可能会更妥当一些。
本人也在网上看到有些人试图用具体的算法实现,奈何水平有限,咱也就不凑热闹了。(动态规划,贪心?I have no IDEA!)或许日后会补充罢。
但是
假如我们每走一步都在大脑内进行如此复杂的考量,这个游戏也就会劝退了大部分人,毕竟我们玩游戏只是消遣,而不是与自己的运气做围棋比赛,需要步步为营,步步惊心。之所以说是运气,因为你能否过关大概率依赖于卡牌起始的排列状态,有些情况铁定无解。例如:
无解?
出现无解的情况无非如下:
- 卡牌起始数目压根都不是 3 3 3 的倍数;
- 卡牌起始数目是 3 3 3 的倍数,但是花色不能完全匹配,就比如上面的那个情况。
至于这个疑问,我们终究是无法得知,除非能够拿到源码。
“我”很了解你…
不得不说,开发者真的是很了解我们大众的心理。
(自己选择形容词)的分享链接
大众的集体荣誉感
将用户按照归属地分为不同省份的比赛队伍,比如经常霸榜的广东。毕竟咱都喜欢为自己的集体争光嘛…
时尚的羊羊
每个羊着装都很 fashion,而且眼睛是憨憨的感觉。
道具和复活只能使用一次
个人认为这是区别于其他小游戏的一份非常重要的点。因为假如每看一次广告都能够让玩家有一次使用道具的机会,整个游戏的难度就会骤降,而且还会给别人一种单纯靠接广告挣钱的感觉,虽然实际上就是靠广告挣钱。
二个关卡之间的难度天差地别
第一个关卡极其简单,第二个关卡则是地狱级别。做完第一个关卡,大部分人都迷之自信,自我感觉良好,也就很容易认为第二关也没那么难,加之“据说只有 0.01% 的人可以通关!玻璃心勿进!”“据说通关的人都能达到爱因斯坦的 IQ!”这种极其…的描述又为你提供了自满情绪的滋生提供了绝佳的生长环境。然而,基本上很少有人能够通关,在你发现自己失败的时候,自信全然崩塌。
你不信邪,你对自己的智商依旧保留了一些信心。
于是乎,
int count = 0; // 尝试次数
bool sleepy = false; // 我还不困
void anotherGame(){
// 我还要再试一次!
}
while(sleepy == false){
count++;
anotherGame();
if (count > max){// max 是尝试次数的阈值
printf("Holy shit... F**k...\n")
break;
}
}
忠告
玩游戏嘛,不过就是图一乐,干嘛那么认真,能过就过,过不了拉倒。何必让一个小游戏坏了自己的心态,这就违背了玩游戏的初衷了。有时间玩游戏,倒不如静下心来看看书或者去户外走走。
谨此纪念我永远逝去的昨夜(从晚上 10 点玩到凌晨 2 点,到最后还是不得不承认自己中了开发者的套路… 😦 )。
@date: 2022/9/25
@author: Wolfafka
@version: 1.0