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