原理說明
除錯時,修改 debug 為 True,真實執行時,設定為 False。停頓時間設定為 2s,如果電腦運算速度太快,保險起見可以設定為 2s。
原理
- adb 截圖
- 找到小人臀部座標(hsv 色相紫黑色)
- 找到下一橋墩的頂點座標
- 找到下一橋墩的極左/極右點座標
- 計算出下一橋墩的中心點座標
- 從小人臀部到下一橋墩中心點計算出跳遠距離
- 將距離換算為長按時長
- 使用 adb 跳
更新日誌
2018-01-01
目的只是找到極點,並不需要二值化,去除相關程式碼。速度快。
目前以 距離 x 1.5 作為長按時長,基本能跳到目標中心位置。
2017-12-30
去除垂直投影圖的方案,使用直接識別背景的方式去除背景,並二值化,以誤別“極點”。速度仍然慢。
2017-12-29
第一可用版本,準確性不高,速度慢,使用垂直投影圖進行目標查詢。
開發環境搭建
系統環境
筆者環境:
$ uname -a
Darwin rmbp-finn.lan 17.3.0 Darwin Kernel Version 17.3.0: Thu Nov 9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64 x86_64
$ python --version
Python 2.7.10
$ 測試機
小米5
複製程式碼
安裝 Python 2.7
略。
(可選安裝) virtualenv, virtualenvwrapper
略。
安裝 adb
略。
工程搭建
先 fork 一份到自己賬戶。然後:
$ mkvirtualenv wechat_micro_jump_game_hero
$ cdvitualenv
$ git clone ...
$ cd wechat_micro_jump_game_hero
$ echo `pwd` > ../.project
$ pip install pipenv
$ pipenv install
複製程式碼
手機連上電腦,開啟跳一跳小遊戲,並點選開始,之後:
$ python main.py
複製程式碼
演示視訊:sanhaolu.com/p/33251
原始碼在這裡:github.com/Shu-Ji/wech…