瘋狂元寶的代碼分析 揭露噁心的騰訊

瘋狂元寶的代碼分析
騰訊推出了一個老虎機的遊戲,名字叫瘋狂元寶,女友比較喜歡玩,所以拼命掙銀幣來給她玩,可是玩了好久直到每天限制的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;
        }
}
 
我們再來看騰訊的廣告詞:
想讓你的元寶數量暴漲嗎?快來參加“瘋狂元寶”遊戲吧。。。
相信看了代碼的分析,聰明的網民應該很清楚,所謂的瘋狂元寶不僅不會使您的元寶暴漲,反而會讓您的元寶迅速被遊戲吸收殆盡。
發佈了22 篇原創文章 · 獲贊 2 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章