疯狂元宝的代码分析
来源:互联网 发布:淘宝闲鱼网 ipad7.0 编辑:程序博客网 时间:2024/04/18 11:11
疯狂元宝的代码分析
腾讯推出了一个老虎机的游戏,名字叫疯狂元宝,女友比较喜欢玩,所以拼命挣银币来给她玩,可是玩了好久直到每天限制的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;
}
}
- 疯狂元宝的代码分析
- 疯狂元宝的代码分析 揭露恶心的腾讯
- 送给大学同学元宝的祝福
- iOS疯狂详解之第三方微信授权登录的iOS代码分析
- 疯狂代码 写给WEB2.0的站长
- 疯狂IOS讲义(下) 的代码
- 献给元宝
- 疯狂代码生成器设计方案
- 修正版 疯狂代码 写给WEB2.0的站长
- 修正版 疯狂代码 写给WEB2.0的站长
- 修正版 疯狂代码 写给WEB2.0的站长
- 修正版 疯狂代码 写给WEB2.0的站长
- 修正版 疯狂代码 写给WEB2.0的站长
- 修正版 疯狂代码 写给WEB2.0的站长
- 修正版 疯狂代码 写给WEB2.0的站长
- 修正版 疯狂代码 写给WEB2.0的站长
- 修正版 疯狂代码 写给WEB2.0的站长
- 疯狂java讲义没有运行起的一段代码示例
- Defect Reporting (Section 2) --怎样使Defect Report更加Effective
- 每天进步一丁点~
- 实例说明java中覆盖静态方法和非静态方法的不同
- 基于C#的接口基础教程之一
- J2ME开发专题
- 疯狂元宝的代码分析
- 基本教程篇--第三节、第四节DateAxisSampleDemo.cs和TextAxisSampleDemo.cs介绍
- 2006技术图书评选
- 常用网站
- 基于C#的接口基础教程之二
- 美国网站兵败中国的10大思路性执行错误
- 应用程序快捷方式的安全隐患
- 用AJAX实现从数据库读取数据实现TreeView(一)
- 用AJAX实现从数据库读取数据实现TreeView(二)