教你用 Python 來(lái)玩微信跳一跳
- QQ 群
    
- github微信跳一跳 314659953 (已滿)
 - github微信跳一跳(2) 176740763 (滿)
 - 跳一跳 89213434
 
 
更新日志:
- 
    
2017-12-29 :
- 增加更新自動(dòng)化運(yùn)行腳本,感謝 GitHub 上的 @binderclip
 
 - 
    
2017-12-30 :
- 請(qǐng)將安卓手機(jī)的 USB 調(diào)試模式打開(kāi),設(shè)置》更多設(shè)置》開(kāi)發(fā)者選項(xiàng)》USB 調(diào)試,如果出現(xiàn)運(yùn)行腳本后小人不跳的情況,請(qǐng)檢查是否有打開(kāi)“USB 調(diào)試(安全模式)”
 - 根據(jù)大家反饋:1080 屏幕距離系數(shù) 1.393 ,2K 屏幕為 1
 - 添加部分機(jī)型配置文件,可直接復(fù)制使用
 
 
相關(guān)問(wèn)題
請(qǐng)先查閱一下 issue 區(qū)
- 參數(shù)出錯(cuò)請(qǐng)?jiān)谶@里提交: issues/62
 - iOS 相關(guān)問(wèn)題: issues/99 和 /issues/4
 - iOS 蘋(píng)果手機(jī)操作步驟
 - Android 安卓手機(jī)操作步驟
 - 注意:別刷太高,已經(jīng)有同學(xué)遇到分?jǐn)?shù)清零的情況了 164
 - 如果有找不到 
./autojump.png圖片的錯(cuò)誤,請(qǐng)查閱 194 - 小白用戶可以參考一個(gè)B站UP主的視頻教程 【微信跳一跳】教你如何不用雙手還能霸占排行榜***名
 
游戲模式
2017 年 12 月 28 日下午,微信發(fā)布了 6.6.1 版本,加入了「小游戲」功能,并提供了官方 DEMO「跳一跳」。
這是一個(gè) 2.5D 插畫(huà)風(fēng)格的益智游戲,玩家可以通過(guò)按壓屏幕時(shí)間的長(zhǎng)短來(lái)控制這個(gè)「小人」跳躍的距離。可能剛開(kāi)始上手的時(shí)候,因?yàn)闀r(shí)間距離之間的關(guān)系把握不恰當(dāng),只能跳出幾個(gè)就掉到了臺(tái)子下面。 玩法類(lèi)似于《Flappy Bird》
如果能精確測(cè)量出起始和目標(biāo)點(diǎn)之間測(cè)距離,就可以估計(jì)按壓的時(shí)間來(lái)精確跳躍?所以花 2 個(gè)小時(shí)寫(xiě)了一個(gè) Python 腳本進(jìn)行驗(yàn)證
希望不要把分?jǐn)?shù)刷太高,容易沒(méi)朋友的。。。
操作規(guī)范
考慮到生產(chǎn)環(huán)境的規(guī)范性,實(shí)驗(yàn)與項(xiàng)目之間不受干擾,請(qǐng)盡量用新的虛擬環(huán)境來(lái)完成實(shí)驗(yàn)
MacOS/Win,請(qǐng)使用如下操作開(kāi)辟新的虛擬環(huán)境(不強(qiáng)調(diào)表示MacOS/Win相同操作)
- 下載Anaconda. MacOS:默認(rèn)安裝/Win:注意安裝時(shí)候勾選配置路徑或者之后手動(dòng)配置,直至cmd后conda關(guān)鍵字有效
 - 查看所有的虛擬環(huán)境 
conda info --envs - 使用命令: 
conda create -n wechat_env python=3,創(chuàng)建名為wechat_env的虛擬環(huán)境,且配置python版本為python3 - 激活虛擬環(huán)境:MacOS: 
source activate wechat_env/Win:activate wechat_env - 安裝所需要的包,比如 
matplotlib等,建議使用conda install package_name來(lái)避免虛擬環(huán)境包的路徑問(wèn)題 
接下來(lái)的操作非必須,僅當(dāng)實(shí)驗(yàn)完成后可操作,試驗(yàn)階段全程在虛擬環(huán)境中操作,進(jìn)入虛擬環(huán)境會(huì)有前置符號(hào)表示如:
(wechat_env) ~/Desktop/wechat_jump_game-master>
- 退出虛擬環(huán)境:MacOS: 
source deactivate wechat_env/ Win:deactivate wecha_env - 刪除虛擬環(huán)境: 
conda remove -n wechat_env --all 
工具介紹
如果你是 iOS + MacOS,請(qǐng)參考下面的配置:
- 使用真機(jī)調(diào)試 WDA,參考 iOS 真機(jī)如何安裝 WebDriverAgent · TesterHome
 - 安裝 openatx/facebook-wda
 - Python 3
 
如果你是 Android + MacOS,請(qǐng)參考下面的配置:
- Python 3
 - 使用brew進(jìn)行安裝 
brew cask install android-platform-tools - 安裝完后插入安卓設(shè)備且安卓已打開(kāi)usb調(diào)試模式(部分新機(jī)型可能需要再另外勾上 允許模擬點(diǎn)擊 權(quán)限),終端輸入 
adb devices,顯示如下表明設(shè)備已連接 
List of devices attached 6934dc33 device
如果你是 Android + Windows,請(qǐng)參考下面的配置:
- Python 3
 - 安裝 ADB 后,請(qǐng)?jiān)?環(huán)境變量 里將 adb 的安裝路徑保存到 PATH 變量里,確保 
adb命令可以被識(shí)別到。 - 同 
Android+ MacOS 測(cè)試連接 
關(guān)于Win+Android的adb調(diào)試添加路徑等問(wèn)題,可以嘗試使用Tools文件夾中adb文件夾進(jìn)行調(diào)試,詳見(jiàn)adb中readme文件
依賴安裝
pip install -r requirements.txt
原理說(shuō)明
- 將手機(jī)點(diǎn)擊到《跳一跳》小程序界面;
 - 用 ADB 工具獲取當(dāng)前手機(jī)截圖,并用 ADB 將截圖 pull 上來(lái)
 
adb shell screencap -p /sdcard/autojump.png
    adb pull /sdcard/autojump.png .
- 計(jì)算按壓時(shí)間
 
- 手動(dòng)版:用 Matplotlib 顯示截圖,用鼠標(biāo)點(diǎn)擊起始點(diǎn)和目標(biāo)位置,計(jì)算像素距離;
 - 自動(dòng)版:靠棋子的顏色來(lái)識(shí)別棋子,靠底色和方塊的色差來(lái)識(shí)別棋盤(pán);
 
- 用 ADB 工具點(diǎn)擊屏幕蓄力一跳;
 
adb shell input swipe x y x y time(ms)
安卓手機(jī)操作步驟
- 安卓手機(jī)打開(kāi) USB 調(diào)試,設(shè)置》開(kāi)發(fā)者選項(xiàng)》USB 調(diào)試
 - 電腦與手機(jī) USB 線連接,確保執(zhí)行 
adb devices可以找到設(shè)備 ID - 界面轉(zhuǎn)至微信跳一跳游戲,點(diǎn)擊開(kāi)始游戲
 - 運(yùn)行 
python wechat_jump_auto.py,如果手機(jī)界面顯示 USB 授權(quán),請(qǐng)點(diǎn)擊確認(rèn) - 請(qǐng)按照你的手機(jī)分辨率從 
./config/文件夾找到相應(yīng)的配置,拷貝到 *.py 同級(jí)目錄./config.json(如果屏幕分辨率能成功探測(cè),會(huì)直接調(diào)用 config 目錄的配置,不需要復(fù)制) 
iOS 手機(jī)操作步驟
- 運(yùn)行安裝好的 
WebDriverAgentRunner - 將手機(jī)點(diǎn)擊到《跳一跳》小程序界面
 - 運(yùn)行腳本。有兩種模式可供選擇:手動(dòng)輔助跳 和 自動(dòng)連續(xù)跳
    
- 手動(dòng)輔助跳
        
- 命令行運(yùn)行 
python3 wechat_jump_iOS_py3.py - 依次點(diǎn)擊彈出的窗口中的起始位置和目標(biāo)位置,會(huì)自動(dòng)計(jì)算距離后起跳
 - 根據(jù)起跳的精準(zhǔn)情況更改 
python3 wechat_jump_iOS_py3.py中的time_coefficient參數(shù),直到獲得***取值 
 - 命令行運(yùn)行 
 - 自動(dòng)連續(xù)跳
        
- 拷貝 
./config/iPhone目錄下對(duì)應(yīng)的設(shè)備配置文件,重命名并替換到./config.json - 命令行運(yùn)行 
python3 wechat_jump_auto_iOS.py - 會(huì)自動(dòng)計(jì)算坐標(biāo)并連續(xù)起跳,根據(jù)起跳的精準(zhǔn)情況更改 
./config.json中的press_coefficient參數(shù),直到獲得***取值 
 - 拷貝 
 
 - 手動(dòng)輔助跳
        
 
實(shí)驗(yàn)結(jié)果

TODO
- 可以對(duì)拉上來(lái)的圖片進(jìn)行顏色分割,識(shí)別小人和目標(biāo)中心,這樣就不需要手動(dòng)點(diǎn)擊自動(dòng)彈跳。
 
事實(shí)證明,機(jī)器人比人更會(huì)玩兒游戲。















 
 
 













 
 
 
 