
最近一周以來(lái),微信小程序游戲“跳一跳”可謂是刷爆朋友圈。不過(guò)你會(huì)發(fā)現(xiàn)排行榜上的好友玩出了動(dòng)輒上千上萬(wàn)的分?jǐn)?shù),這背后的秘訣是什么呢?

哈哈,當(dāng)然就是“開(kāi)掛”啦!
不過(guò),我寫(xiě)這篇文章可不是為了教大家怎樣去開(kāi)掛,而是讓大家體會(huì)到計(jì)算機(jī)技術(shù)的巧妙應(yīng)用。至于游戲嘛,還是要憑真本事去玩,那才有意思。
首先,開(kāi)掛的方法有多種,最簡(jiǎn)單粗暴的方式就是抓包并篡改游戲向服務(wù)器提交的數(shù)據(jù)。用這種方法可以輕松拿到任意分?jǐn)?shù),不過(guò)現(xiàn)在已經(jīng)失效了。而我在這里提到的是一種相對(duì)無(wú)害的方法,并不修改游戲本身的數(shù)據(jù),只是借助程序幫助我們計(jì)算游戲中的目標(biāo)距離并完成自動(dòng)化操作。
簡(jiǎn)單理解,就是讓計(jì)算機(jī)代替人來(lái)玩這個(gè)游戲。
以下的操作方法針對(duì) Android 手機(jī),電腦上使用 Windows 系統(tǒng)。 iOS 上的方案也是有的,不過(guò)我沒(méi)有親自測(cè)試過(guò),就不在這里提及。
準(zhǔn)備 Python
Python 是當(dāng)今最熱門(mén)的編程語(yǔ)言之一,擁有大量豐富而強(qiáng)大的庫(kù)。本次我們需要用到 Python 編寫(xiě)的腳本程序,所以如果你電腦上還沒(méi)有安裝 Python 3.x 和其包管理工具 pip3 的話,可以在 Python 官網(wǎng)上獲取并安裝。安裝完畢以后,還要添加到 Windows 的環(huán)境變量中。
本次我們需要用到 Pillow 庫(kù)。這是 Python 里的圖像處理庫(kù),提供了了廣泛的文件格式支持和強(qiáng)大的圖像處理能力。安裝的方法很簡(jiǎn)單,在 CMD 中輸入以下命令:
pip3 install pillow
按下回車(chē),如果出現(xiàn)確認(rèn)信息的話,輸入 “y” 再按回車(chē)即可。
準(zhǔn)備 ADB Shell
ADB 工具可以讓我們?cè)陔娔X上用命令行輕松調(diào)試 Android 手機(jī)。打開(kāi)以上網(wǎng)址的頁(yè)面并選擇 ADB Kits 進(jìn)行下載。
安裝完畢以后,我們用數(shù)據(jù)線將手機(jī)連上電腦。這時(shí)候我們需要在手機(jī)上確認(rèn)允許開(kāi)啟“USB 調(diào)試”的功能。
另外,有些手機(jī)廠商為了安全起見(jiàn),在系統(tǒng)設(shè)置中關(guān)閉了 ADB 模擬點(diǎn)擊的權(quán)限。我們需要手動(dòng)開(kāi)啟,以 MIUI 為例,我們需要在開(kāi)發(fā)者選項(xiàng)中打開(kāi)這項(xiàng)開(kāi)關(guān):

獲取“外掛”腳本
https://github.com/wangshub/wechat_jump_game
我們可以在 Github 上下載自動(dòng)操控“跳一跳”的項(xiàng)目代碼。感謝 wangshub 為我們準(zhǔn)備了現(xiàn)成的代碼,你只需要在這個(gè)頁(yè)面下載即可。

對(duì)下載后的 ZIP 壓縮包進(jìn)行解壓,得到一個(gè)文件夾。把剛才下載的 ADB 工具那三個(gè)文件移動(dòng)到這個(gè)文件夾中,待會(huì)兒我們的腳本程序才能通過(guò) ADB 工具控制手機(jī)。
一切就緒
將手機(jī)連上電腦,在手機(jī)微信上打開(kāi)“跳一跳”游戲的界面。
在我們下載的腳本文件夾中找到 wechat_jump_auto.py,在其右鍵菜單中選擇 IDLE 打開(kāi)。為什么不直接在 CMD 或者 Powershell 里運(yùn)行呢?因?yàn)槲野l(fā)現(xiàn)腳本中的中文字符使得在控制臺(tái)下運(yùn)行的時(shí)候會(huì)導(dǎo)致錯(cuò)誤(可能是因?yàn)槲沂褂糜⑽陌嫦到y(tǒng)的緣故)。

直接按 F5,運(yùn)行腳本。

之后程序就會(huì)一直運(yùn)行下去,你會(huì)看到手機(jī)上的棋子開(kāi)始自己跳動(dòng)。在這過(guò)程中,電腦上會(huì)不斷彈出空白的控制臺(tái)窗口并很快消失。

雖然程序操控也會(huì)有失手的時(shí)候,但是玩出高分成績(jī)肯定是不成問(wèn)題的。
結(jié)語(yǔ)
本期的講解到底這里就結(jié)束啦。經(jīng)過(guò)這次“開(kāi)掛”體驗(yàn),我們也對(duì) Python、ADB 等工具的應(yīng)用有了更多的體會(huì)。最終刷出來(lái)的成績(jī)是否能留在排行榜上并不重要,重要的是我們學(xué)到了東西,并且感受到了十足的樂(lè)趣。
另外說(shuō)句題外話,我不得不吐槽一下這游戲的難度。要想手動(dòng)跳過(guò)這一步,真不知要花掉多少運(yùn)氣 ><

祝大家玩得開(kāi)心!我還會(huì)和大家分享更多有趣的技術(shù)和互聯(lián)網(wǎng)資訊。