疯狂元宝的代码分析 揭露恶心的腾讯
来源:互联网 发布:linux snmpwalk oid 编辑:程序博客网 时间:2024/03/29 05:53
疯狂元宝的代码分析
腾讯推出了一个老虎机的游戏,名字叫疯狂元宝,女友比较喜欢玩,所以拼命挣银币来给她玩,可是玩了好久直到每天限制的100次最大只中了一个5倍,把她郁闷坏了,我觉的按概率不应该这样,就把他的flash反编译了,真是不看不知道,一看下一跳,腾讯真恶心。只能用恶心形容了。
这个picstop函数应该是老虎机停止的函数。
下面来对他的这个函数进行一下分析,使用了swith,即停止的情况一共有-4~~8这13种情况。
他构建了三个初始化数组
ran1 = [2, 4, 6, 8, 10, 12];
ran2 = [2, 4, 6, 8, 10, 12];
ran3 = [2, 4, 6, 8, 10, 12];
这里面2是代表诺基亚
-4~~0这五种情况的可选数组里都没有2,并且都是用while语句使其不能产生三个相同的,即这五种情况任何奖都不可能中。
1为全2
2为全4
3为全6
4为全8
5为全10
6为全12
7 可供选择的数组里没2,他产生一个随机数0-3,
这个随机数如果为0则1,2洞为2,为1则1,3洞为2,否则的话2,3洞为2,总之就是这种情况为中2个2即中5倍。
8 可选数组中有2,但他使用了1个嵌套while循环,使结果只产生一个2
而他的这个prize值是通过服务端的某一算法生成的,即生成之后再传递到客户端来,你每次中没中,中什么开奖之前服务端就已经知道了。
可见中奖的结果是腾讯来控制的,如果他发发慈心后台算法上prize可能返回1,那估计我们还有希望中大奖,否则只有累死你的小手和大脑了。
他的这个while语句真够恶心的。
while (((_local1 == _local3) and (_local3 == _local2)) and (_local1 == _local2)) {
_local1 = ran1[random (5)];
_local3 = ran2[random (5)];
_local2 = ran3[random (5)];
}
function picstop() {
switch (_root.prize) {
case -4 :
var ran1;
var ran2;
var ran3;
var _local1;
var _local3;
var _local2;
ran1 = [4, 6, 8, 10, 12];
ran2 = [4, 6, 8, 10, 12];
ran3 = [4, 6, 8, 10, 12];
_local1 = ran1[random (5)];
_local3 = ran2[random (5)];
_local2 = ran3[random (5)];
while (((_local1 == _local3) and (_local3 == _local2)) and (_local1 == _local2)) {
_local1 = ran1[random (5)];
_local3 = ran2[random (5)];
_local2 = ran3[random (5)];
}
_root.dong1 = _local1;
_root.dong2 = _local3;
_root.dong3 = _local2;
return;
case -3 :
var ran1;
var ran2;
var ran3;
ran1 = [4, 6, 8, 10, 12];
ran2 = [4, 6, 8, 10, 12];
ran3 = [4, 6, 8, 10, 12];
var _local1 = ran1[random (5)];
var _local3 = ran2[random (5)];
var _local2 = ran3[random (5)];
while (((_local1 == _local3) and (_local3 == _local2)) and (_local1 == _local2)) {
_local1 = ran1[random (5)];
_local3 = ran2[random (5)];
_local2 = ran3[random (5)];
}
_root.dong1 = _local1;
_root.dong2 = _local3;
_root.dong3 = _local2;
return;
case -2 :
var ran1;
var ran2;
var ran3;
ran1 = [4, 6, 8, 10, 12];
ran2 = [4, 6, 8, 10, 12];
ran3 = [4, 6, 8, 10, 12];
var _local1 = ran1[random (5)];
var _local3 = ran2[random (5)];
var _local2 = ran3[random (5)];
while (((_local1 == _local3) and (_local3 == _local2)) and (_local1 == _local2)) {
_local1 = ran1[random (5)];
_local3 = ran2[random (5)];
_local2 = ran3[random (5)];
}
_root.dong1 = _local1;
_root.dong2 = _local3;
_root.dong3 = _local2;
return;
case -1 :
var ran1;
var ran2;
var ran3;
ran1 = [4, 6, 8, 10, 12];
ran2 = [4, 6, 8, 10, 12];
ran3 = [4, 6, 8, 10, 12];
var _local1 = ran1[random (5)];
var _local3 = ran2[random (5)];
var _local2 = ran3[random (5)];
while (((_local1 == _local3) and (_local3 == _local2)) and (_local1 == _local2)) {
_local1 = ran1[random (5)];
_local3 = ran2[random (5)];
_local2 = ran3[random (5)];
}
_root.dong1 = _local1;
_root.dong2 = _local3;
_root.dong3 = _local2;
return;
case "0" :
var ran1;
var ran2;
var ran3;
ran1 = [4, 6, 8, 10, 12];
ran2 = [4, 6, 8, 10, 12];
ran3 = [4, 6, 8, 10, 12];
var _local1 = ran1[random (5)];
var _local3 = ran2[random (5)];
var _local2 = ran3[random (5)];
while (((_local1 == _local3) and (_local3 == _local2)) and (_local1 == _local2)) {
_local1 = ran1[random (5)];
_local3 = ran2[random (5)];
_local2 = ran3[random (5)];
}
_root.dong1 = _local1;
_root.dong2 = _local3;
_root.dong3 = _local2;
return;
case "1" :
_root.dong1 = 2;
_root.dong2 = 2;
_root.dong3 = 2;
return;
case "2" :
_root.dong1 = 4;
_root.dong2 = 4;
_root.dong3 = 4;
return;
case "3" :
_root.dong1 = 6;
_root.dong2 = 6;
_root.dong3 = 6;
return;
case "4" :
_root.dong1 = 8;
_root.dong2 = 8;
_root.dong3 = 8;
return;
case "5" :
_root.dong1 = 10;
_root.dong2 = 10;
_root.dong3 = 10;
return;
case "6" :
_root.dong1 = 12;
_root.dong2 = 12;
_root.dong3 = 12;
return;
case "7" :
var ranx;
var ranran;
ranran = random (3);
ranx = [4, 6, 8, 10, 12];
if (ranran == 0) {
var _local1 = 2;
var _local3 = 2;
var _local2 = ranx[random (5)];
} else if ((ranran = 1)) {
var _local1 = 2;
var _local3 = ranx[random (5)];
var _local2 = 2;
} else {
var _local1 = ranx[random (5)];
var _local3 = 2;
var _local2 = 2;
}
_root.dong1 = _local1;
_root.dong2 = _local3;
_root.dong3 = _local2;
return;
case "8" :
var ran1;
var ran2;
var ran3;
ran1 = [2, 4, 6, 8, 10, 12];
ran2 = [2, 4, 6, 8, 10, 12];
ran3 = [2, 4, 6, 8, 10, 12];
do {
var _local1 = ran1[random (6)];
var _local3 = ran2[random (6)];
var _local2 = ran3[random (6)];
while (((_local1 != 2) and (_local3 != 2)) and (_local2 != 2)) {
_local1 = ran1[random (6)];
_local3 = ran2[random (6)];
_local2 = ran3[random (6)];
}
} while (((((_local1 == 2) and (_local3 == 2)) or ((_local1 == 2) and (_local2 == 2))) or ((_local3 == 2) and (_local2 == 2))) or (((_local1 == 2) and (_local3 == 2)) and (_local2 == 2)));
_root.dong1 = _local1;
_root.dong2 = _local3;
_root.dong3 = _local2;
return;
}
}
我们再来看腾讯的广告词: 想让你的元宝数量暴涨吗?快来参加“疯狂元宝”游戏吧。。。
相信看了代码的分析,聪明的网民应该很清楚,所谓的疯狂元宝不仅不会使您的元宝暴涨,反而会让您的元宝迅速被游戏吸收殆尽。
- 疯狂元宝的代码分析 揭露恶心的腾讯
- 疯狂元宝的代码分析
- 送给大学同学元宝的祝福
- 临时文档8--好恶心的代码
- VBS代码--很恶心的整人效果
- 业内专家全面揭露分析 手机乱扣钱的黑幕
- 变量的定义:让我们的代码不再"恶心"
- 怎么java的代码看着这么恶心~~?
- 修改一行代码的顺序引发恶心bug
- 微软编辑器的代码高亮 (恶心模拟)
- 恶心的一天
- 恶心的笑话(转贴)
- 恶心的一天
- 恶心的圈子
- 超级恶心的MSN
- 恶心的消炎片
- 恶心的微软
- 恶心的一天。。。
- Internet高级编程作业:Producer-consumer problem implemented by semaphore
- 关于网络的几个问题
- 明天,新的起点,希望自己做的更好。
- 几种作曲法[转]
- 深圳的冬天
- 疯狂元宝的代码分析 揭露恶心的腾讯
- 企业如何快速应对市场环境的不断变化
- 作曲方法(来自台湾的专家讲授)必读
- 安装MS SQL Server 2005的痛苦经历
- 作曲的方法!(较通俗)
- 十分钟内学会:让你的博客文章也有机会成上Digg头版[转载]
- MS Expression 进军Web 开发市场
- SourceGrid
- 发发牢骚