1. 程式人生 > >跳一跳輔助實現思路詳解

跳一跳輔助實現思路詳解

首先,這個輔助用到了opencv的庫,這是一個很多人貢獻的跨平臺計算機視覺庫,具體可以百度瞭解。
我們看一張跳一跳的圖片
jump
這個遊戲邏輯很簡單,就是從一個方格跳到另一個方格上,按壓時間的長短控制跳動的距離,所以輔助的邏輯也很簡單,就是計算出棋子到下一個方格的距離是多少,然後通過距離來計算按壓時間。
這裡難度最大的是如何計算出棋子到下一個方格的距離是多少。那我是這麼來做的,首先opencv庫裡有一個函式叫matchTemplate,它能從圖中匹配出你預設的模板的圖片的起始位置。這裡,我的模板是這張圖片,然後這個匹配度幾乎是100%的。
template

logic
當我們得到棋子的起始位置的時候,通過起始位置的y座標+棋子高度得到實際棋子的y座標,起始位置的x座標+棋子寬度得到實際棋子的x座標。

之後我們要計算的是落腳點的座標。這裡我用的方法是opencv的邊緣檢測。因為圖片的方塊邊緣清晰,所以用邊緣檢測可以得到非常清晰的方塊邊緣,像下面的圖片,
canny
有了這張圖後,你就能做很多事情了,我的做法是從紅線開始往下掃,但第一次找到畫素點為白色的時候往下找,但在此遇到白色畫素的點時,計算兩個點的中間點的位置。像下圖這樣
findpoint
當知道這2個點時就可以計算出距離了。然後就可以通過ADB進行模擬跳躍了。這裡的邏輯大部分的方格都能跳躍了,但是個別的方格會出問題,後面會對找落腳點的邏輯進行更細的分解,實現絕大部分的方格都能跳過。

github地址:https://github.com/stackisok/wechat_jumponejump_cheat