2017年12月28日下午,微信發佈了 6.6.1 版本,同時加入“小遊戲”的功能,並且推出一款“跳一跳”的小遊戲,一時間風靡朋友圈。
這篇文章不會告訴你如何去贏得高分,只是通過技術的角度來說明一下如何代碼來讓遊戲自動運行。
我是偶然的機會在公衆號裏面看到關於這個遊戲腳本的文章的,通過python實現,膜拜大神!我感覺很有趣,所以研究了一下代碼,收穫頗豐。我是搞Android開發的,這裏就主要說一下Android版本的微信跳一跳遊戲腳本實現並運行的過程吧。
本文用到工具:Mac或者windows電腦,python2/3,adb工具,Android手機(我的手機是MI NOTE LTE),數據線
關於遊戲腳本,作者已經在github公佈,地址:wechat_jump_game
首先,我們來講一下原理
腳本原理
用 ADB 工具獲取當前手機頁面截圖,並用adb將截圖上傳
打開微信跳一跳遊戲頁面,通過命令獲取截圖並上傳:
adb shell screencap -p /sdcard/autojump.png adb pull /sdcard/autojump.png
識別棋子,目標點和背景的位置,計算目標的距離,並且計算按下的時間
識別棋子:靠棋子的顏色來識別位置,通過截圖發現最下面一行大概是一條直線,就從上往下一行一行遍歷,比較顏色(顏色用了一個區間來比較)找到最下面的那一行的所有點,然後求箇中點,求好之後再讓 Y 軸座標減小棋子底盤的一半高度從而得到中心點的座標
識別棋盤:靠底色和方塊的色差來做,從分數之下的位置開始,一行一行掃描,由於圓形的塊最頂上是一條線,方形的上面大概是一個點,所以就用類似識別棋子的做法多識別了幾個點求中點,這時候得到了塊中點的 X 軸座標,這時候假設現在棋子在當前塊的中心,根據一個通過截圖獲取的固定的角度來推出中點的 Y 座標
用adb工具模擬屏幕點擊事件
'adb shell input swipe {x1} {y1} {x2} {y2} {duration}'
如何使用
安裝python,安裝adb工具,做android開發的Android SDK中都帶有adb,只需要配好環境變量即可。
Android手機打開USB調試,設置>開發者選項>USB 調試,同時有些手機需要同時打開“允許模擬點擊”,通過
adb devices
可以查看當前設備,判斷是否連接成功安裝pillow,執行如下命令即可:
sudo pip install Pillow
界面轉至微信跳一跳遊戲,點擊開始遊戲
- 運行python wechat_jump_auto.py,如果手機界面顯示 USB 授權,請點擊確認
- 請按照你的手機分辨率從./config/文件夾找到相應的配置,拷貝到 *.py 同級目錄./config.json(如果屏幕分辨率能成功探測,會直接調用 config 目錄的配置,不需要複製)
最後說一下
這只是遊戲,何必認真呢!通過技術看到本質纔是軟件工程師應該做的。