现在的位置: 首页 > 实用文章 > 正文

教你水果忍者在香蕉模式下(Arcade Mode)轻松过1000分,附视频

2012年08月27日 实用文章 ⁄ 共 5479字 ⁄ 字号 评论关闭

首先解释一下什么叫伪随机:

在计算机、通信系统中我们采用的随机数、随机码均为伪随机数、伪随机码。所谓“随机码”,就是无论这个码有多长都不会出现循环的现象,而“伪随机码”在码长达到一定程度时会从其第一位开始循环,由于出现的循环长度相当大,例如CDMA采用42的伪随机码,重复的可能性为4.4万亿分之一,所以可以当成随机码使用。(百度百科)

伪随机可以用抽样来做解释,10个样品有一个是次品,如果次品被放在第一个,每次都从第一个开始抽并只抽1个,这样次品率就是100%,也就是伪随机。真正的随机只要抽样的次数足够多,次品率就会趋于一个10%的水平。

 

好了,言归正传。我们遗憾地发现,《水果忍者》这个游戏中出现水果的种类、个数和时间等,也并非真的是随机出现的。它也是一个伪随机的游戏。我们的测试平台有二,一是ios,一是android。其他平台如windows phone暂不讨论。

接下来,为了验证以上的说法。我们先对《水果忍者》这个游戏所玩的关卡进行一个标记。不妨将第一次启动这个游戏,我们玩的第一局称为关卡1,第二局为关卡2,以此类推。如果把游戏重启的话,还要从关卡1开始玩。首先,我们发现每次玩的关卡1都是一样的——这点非常感谢林亦园1Q84对ios平台和android平台的验证。我们先讨论IOS上的《水果忍者》——android大同小异——只要打开水果忍者并选择香蕉模式,一开始你肯定会碰到这5个家伙:

 

接着如果你一个水果都不切的话,那么在第50秒在屏幕中间的上方会掉下一个冰香蕉(Freeze):

不要切这个冰香蕉,也不切其他水果的话,第16秒屏幕左边会扔一个狂热香蕉(Frenzy):

这就是伪随机。程序是固定的。

有同学要说了,我的水果忍者关卡1可不是这样的。首先你要确定你玩的到底是不是关卡1。怎么让自己从关卡1开始呢:退出游戏,注意是退出而不是后台,重新启动游戏,如果你看到这个画面:

那么你的ios进入香蕉模式就和上面一样了。【目前已经有同学反映他们ios的关卡1开头分别是[2个炸弹、2个苹果]龚大韦(iphone用户 游戏来源于app store)和[1个炸弹、几个草莓]张晋瑞 和[ 1个炸弹1个苹果1个草莓]施旭辉苏小彤✿在此更正哈】

而在android上什么都不切的话,香蕉出现的顺序为:冰香蕉38(秒)  狂热香蕉24  狂热21  狂热13——来自林亦园1Q84

【值得注意的是:在windows phone 上即使重新启动游戏关卡1也是不尽相同的,应该是wp设置了随机种子吧。感谢王思越 和吴立扬敛儒磐对windows phone的补充】

但是发现这个伪随机没什么不起的。因为玩高分总是要切水果的,上面的根本一个水果都没切。可是我们切了水果之后发现和没切水果是不一样的,特别明显的是16秒时的狂热香蕉不见了,在其他时候还出现了别的香蕉。于是我和林亦园1Q84开始讨论到底是什么因素导致了水果出现顺序与格局的改变。最直接的方法就是查看程序源码,但这就没意思了,和作弊一个意思,也超出了我的能力。所以只好闷头继续玩关卡1,得出4种潜在的影响因素:

  • 水果(不包括香蕉)
  • 香蕉(包括frenzy,freeze和double)
  • 连切(combo)
  • 炸弹

最后排除水果、连切和炸弹3个因素的影响。因为在50秒以前不论如何切水果、如何连切、如何切炸弹都不影响50秒的时候掉出冰香蕉——除非你在51秒切到炸弹把冰香蕉轰没了。

同时发现切不切冰香蕉会导致后面的格局不尽相同。

 

显然香蕉是最重要的因素,因为香蕉影响后面出来的香蕉,而且要玩高分香蕉越多也就越容易。

但是每次玩关卡1切到香蕉之后再出来香蕉的时间和种类也似乎不一样了。里面肯定还有什么没发现的变量,我不认为是随机事件或者大家习惯称的人品。因为只要你尽量保持和上次的切法,甚至能切出和上次一样的格局和差不多的分数——为什么不是一样的分数呢,因为水果和连切不影响出香蕉,所以这次你多切几个水果和连切分数自然就高了——历史会重演即是最好的证明,只要你能保持和上次一模一样的轨迹,分数肯定相同。

到这里毫无头绪的时候,林亦园1Q84建议我去找找有没有相关的攻略,我心想大部分人倾向于认为得分高低是人品作祟,应该不会有这方面的攻略。但我还是去找了,甚至还让我找到了一个视频。我不知道视频作者是否认同上述的观点,但其玩法的本质和我的想法不谋而合。视频里面的一句话也一针见血地提醒了我——第一个冰香蕉一定要消灭在萌芽状态——是不是前面提到的未知变量就是香蕉出现后所处的位置或时间呢。

果然,我又玩了几局关卡1。对于未知变量的结论是切到香蕉的时间。每个香蕉大概出现1秒钟,将这一秒钟分为几段,在每段内切到香蕉都会导致后续香蕉的变化。以50秒出现的冰香蕉为例子,一出来就把它切掉,在第31秒屏幕左边会扔出一个双倍香蕉;而在50秒的冰香蕉快掉落时切掉,则是在第33秒掉落一个冰香蕉。接着对31的双倍香蕉和33秒的冰香蕉进行分析也得出相同的结论。为了让结论更有代表性,于是我试了一下关卡2。一样的结论,但是有意思的是,关卡1的香蕉对关卡2的香蕉也有影响,也就是说我们打开游戏进入香蕉模式,直接点左下角的暂停按钮再点右边的循环按钮直接进入关卡2,和我们在关卡1切了一个香蕉后再进入关卡2,这两个关卡2是不一样的。细心的同学这时肯定发现了,水果忍者里面的伪随机码就是香蕉。

我们做一个简单的假设。把一个香蕉出现的时间(假设1秒)分为2段区间:[0,0.4]和(0.4,1],且在区间1切到香蕉导致的下一个香蕉相同,区间2亦然。加上我们可以选择不切这个香蕉,一共3种结果。于是我们甚至可以通过画3叉树来枚举关卡1所有的情况:

既然能枚举出所有的情况。我们所要做的就是用动态规划(或贪心算法)找出那个能使你分数最高的香蕉切法——香蕉最多或者3个香蕉一起出都不错对吧——然后多玩几次把分数达到极限。如果尝试了关卡1所有情况还是不能达到令你满意的分数,那就是试一下关卡2吧,或者切一个香蕉再进入关卡2。

 

如果你觉得这么做还是太麻烦的话,还记得我上面说的视频吗——那是个上1000分的视频。只要你照着这个视频去做,历史会重演的。这个视频在最后会贴出来,不过视频作者用的是魅族M9,只要你也是android用户的话,你也能轻松上1000分。。不过我是不推荐照着别人的轨迹去玩的,游戏都限定死了还有什么意思呢?所以我也不会做一个ios的视频让大家照着我的轨迹去切上1000分...

 

接下来讨论2个得分技巧:

  • 连切(combo)
  1. 连切3个水果(3 fruit combo)及以上将增加一倍的分数,即3 fruit combo 奖励3分,10 fruit combo 奖励10分
  2. 连切3个水果计一次连切(即1个combo),一次切6个水果计2个combo,combo 4 + combo 5算3个combo, 同理combo 3 + combo 6, combo 5 + combo 5同样算3个【红字感谢陈思宇SHIN 的更正,原文4+5记2个combo系错误】
  3. 累计3个combo会获得加速效果和连击奖励,加速效果下,combo越多连击奖励越多,一旦加速消失,累计的combo清零
  4. 累计3个combo 连击奖励+5分 字幕显示combo blitz
  5. 累计6个combo 连击奖励+10分 字幕显示great  blitz
  6. 累计9个combo 连击奖励+15分 字幕显示awesome blitz
  7. 累计12个combo 连击奖励+20分 字幕显示super blitz
  8. 累计15个combo 连击奖励+25分 字幕显示hyper blitz
  9. 累计18个combo 连击奖励+30分 字幕显示unbelievable  blitz
  10. 累计21个combo 连击奖励+30分 字幕显示unbelievable  blitz
  11. 累计24个combo 连击奖励+30分 以此类推...
  12. 加速效果下背景会持续出现向上的箭头和越来越急促的鼓点声,水果掉落的速度也越来越快直到加速效果消失或游戏结束

 

  • 过关奖励(bonus),+20分以下的就不列举了:
  1. 过关分数为10的倍数(不包括过关奖励,下同) +20分  荣誉或称号:multiple of ten
  2. 过关分数为100的倍数  +40分  荣誉或称号:multiple of hundred
  3. 过关分数为111的倍数  +50分  荣誉或称号:triple digits
  4. 只切一种香蕉   +30分  荣誉或称号:nothing but Freeze/Frenzy/Double
  5. 不切任何香蕉   +50分  荣誉或称号:no bananas sliced
  6. 第一个和最后一个水果相同 +25分  荣誉或称号:first and last fruit
  7. 一次切到6个水果 +20分 荣誉或称号:great 6 fruit combo
  8. 一次切到7个水果 +30分 荣誉或称号:great 7 fruit combo
  9. 一次切到8个水果 +40分 荣誉或称号:great 8 fruit combo
  10. 一次切到9个水果 +50分 荣誉或称号:impossible 9 fruit combo
  11. 一次切到11个水果 +55分 荣誉或称号:impossible 11 fruit combo
  12. 累计21个combo(combo不清零,下同) +25分 荣誉或称号:combo apprentice
  13. 累计27个combo  +35分 荣誉或称号:combo master
  14. 累计33个combo  +50分 荣誉或称号:combo god
  15. 累计切3个炸弹 +50分 荣誉或称号:bomb lover
  16. 没有水果掉落 +50 荣誉或称号:No fruit dropped
  17. 只切草莓 +100 荣誉或称号:nothing but berry
  18. 当然,过关奖励只会是分数最高的那三个
文章来源: 顾振琪博客www.bbgxzx.com

 

【有些同学对游戏“伪随机”性提出不同看法,我认为很有道理,一并附在下面】

杜凱文→evan :不光这是伪随机。。每组水果都有设定好的规律,比如random、random、plum、bomb,并且有数量也有最大和最小值一般下限都是1,上限是7。。曾通过修改这个程序将每列水果数量改变。。当切到狂热时效果可想而知。。会用ultra edit的童鞋不妨一试。。小改后轻松1600

 

张松12GS :回复杜凱文→evan: 安卓上的源代码哪里可以下载到哇?

杜凱文→evan回复张松12GS:安卓不清楚,不过我觉得应该比IOS简单~应该直接USB链接电脑找fruitninja文件夹然后在documents里面找filearcive.bin吧~有兴趣的自己试一试也很有成就感的哈哈,提醒下修改程序别忘了备份原文件!~

 

倪效熹 回复吴达乐 lego:关键问题是,你所描述的现象就不是“随机”现象,当然也就不是“伪随机”,人家设计的时候这个就不随机,就是固定的。。。游戏为了可玩性,不可能是完全随机的

王宽:所谓伪随机,就是一列很长的数,一个数代表一个东西。这列数不停地循环运行。很久以前拉斯维加斯的赌博机器用的就是伪随机。如果切香蕉会导致之后的东西变化,那么我觉得是就是随机种子变了。之所以每关都不一样,也是因为随机种子不同的原因吧。  伪随机数是由递推函数推出来的,函数的解集就是那个数列。种子大概就是函数中的一个变量的赋值。种子一样,解集就一样。种子变了,解集就变了。计算机只能实现伪随机,伪随机是对现实世界中随机现象的一种模拟。

闫一弓_Marco:程序的世界都是伪随机。。。。没有向自然界抛硬币似的真随机。

宋适宇:这个不是伪随机,是程序编写者的失误,或者程序作者故意这样的,每次启动游戏的时候没有重设随机数种子所致。随机数种子一般采用计算机当前时间从1970年1月1日算起的秒数,所以每次程序启动随机数种子都是不一样的,由此产生的随机数序列就是不一样的,这样就可以保证每次程序运行结果不一样。

明睿CS:根据经验,这是srand的时候忘了用时间做参数。

祝鹤林Lin™Phear:看来没有用time_t做randseed

夏雨民:这是固定设定而不是真正的伪随机,要知道,计算机只能实现伪随机,因为它是确定机,只有你人脑这种才叫非确定机……就算是伪随机,也可以通过不同的种子在不同时刻获得不同的随机效果。

龙禹含:不同平台上的随机数的动态链接库有区别,所以导致初值不同吧,种子的取法的应该都是一样的吧

 

视频:android 用户照这个视频玩就可以上1000分了。

 

注:此视频作者并非本人,游戏中有些步骤并非必须的,直接看视频的同学若有疑惑或者兴趣还请关注前面的文本内容...

同时:鉴于财力和人脉实在有限只对少数机子进行了验证,其他的机型还需大家一起努力,但伪随机想必是存在的...这也是这篇文章讨论的重点,特别是目前已经有很多同学跑来说[游戏嘛,娱乐为主,认真你就输了],所以我本人也是有一种深深被这个游戏fuck了一把的感觉...感谢大家的支持!

注:(2012.08)一年前的帖子了,感谢大家的关注又把它推到热门分享里头,倒是水果忍者这个游戏我也已经很久没玩,貌似版本也更新了好几次、版本较高(不是指靴之猫)的朋友可能会有所出入,但是一些拿高分的细节是不会改变的,所以特别提醒大家{ctrl+f+得分技巧}到文章‘最有价值’也是‘授之以鱼不如授之以渔’的部分。

有同学反应了上述问题,郭天恰.c :版本问题,我试过1.4的可以用的,1.7就不行了

 

林亦园1Q84:鉴于越来越多的人问背景音乐是什么...我用soundhounds搜了一下:

 

Irreplaceable [Irreemplazable][Mix]

by Beyonce

on Irremplazable

【soundhounds】这款软件还是很有用处的...

抱歉!评论已关闭.