溫馨提示:微信已經開始檢測分數異常高的情況了,請大家不要跑太高哦
游戲模式
這是一個 2.5D 插畫風格的益智游戲,玩家可以通過按壓屏幕時間的長短來控制這個「小人」跳躍的距離。可能剛開始上手的時候,因為時間距離之間的關系把握不恰當,只能跳出幾個就掉到了臺子下面。這個游戲玩法類似于《flappy bird》

如果能精確測量出起始和目標點之間測距離,就可以估計按壓的時間來精確跳躍?所以花2個小時寫了一個python腳本進行驗證。在公開代碼后,相繼有愛好者添加了圖像識別算法,并連續改進,連續正中紅心40+次
希望不要把分數刷太高,容易沒朋友的。。。
工具介紹
- Python 2.7
- Android 手機
- Adb 驅動
- Python Matplot繪圖
原理說明
- 將手機點擊到《跳一跳》小程序界面;
- 用Adb 工具獲取當前手機截圖,并用adb將截圖pull上來
adb shell screencap -p /sdcard/1.png adb pull /sdcard/1.png .
- 用matplot顯示截圖(已經圖像識別處理)
- 用鼠標點擊起始點和目標位置,計算像素距離 (已經圖像識別處理)
- 根據像素距離,計算按壓時間;
- 用Adb工具點擊屏幕蓄力一跳;
adb shell input swipe x y x y time
如果你是 iOS:
- 運行安裝好的 WebDriverAgentRunner
- 將手機點擊到《跳一跳》小程序界面
- python3 wechat_jump_iOS_py3.py
- 依次點擊起始位置和目標位置,實現蓄力一跳
- 打開 python3 wechat_jump_iOS_py3.py,根據蓄力一跳的精準情況更改其中的 time_coefficient,直到獲得最佳取值
步驟
- 安卓手機打開USB調試,設置》開發者選項》USB調試
- 電腦與手機USB線連接,確保執行adb devices可以找到設備id
- 界面轉至微信跳一跳游戲,點擊開始游戲
- 運行python wechat_junp_auto.py,如果手機界面顯示USB授權,請點擊確認
我的屏幕是1920*1080,距離系數為1.35,如果是別的分辨率,暫時需要修改一下代碼中的距離系數.
實驗結果
只要有耐心,你就是王者

我的成績
TODO
可以對拉上來的圖片進行顏色分割,識別小人和目標中心點,這樣就不需要手動點擊自動彈跳。事實證明,機器人比人更會玩兒游戲。
結尾
最后多說一句,小編是一名python開發工程師,這里有我自己整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、爬蟲、數據分析、數據可視化、機器學習等。想要這些資料的可以關注小編,并在后臺私信小編:“01”即可領取。