環境:
工具:手機/安卓模擬器,按鍵精靈手機助手系統版本:android 10
問題描述:
描述:通過編程實現自動領取每日廣告卡牌包,分享思路和使用到的代碼,并進行解析。本文章僅僅只是個人學習所用,記錄并復習所用的知識,并未對軟件進行非法篡改和破壞行為。
(資料圖片)
提示:若按照教程還是無法完成操作,可以進入右側的企鵝,找我看看。
解決方法-視頻與文字教程:
視頻教程:
文字教程:
1.首先思考思路流程大致為:主界面-進入領取界面-開始循環-完成后返回主界面同時代碼需要具備:每個步驟都有其輸出提示-將固定的步驟/高頻率的代碼寫成函數。
2.準備工作:實現,將固定的步驟/高頻率的代碼寫成函數。
- 一般為固定的點擊動作,如,某個關閉按鈕固定位為一個位置,那么就封裝一個函數代替動作。
- 日志和提示功能也很常用,點擊和滑動動作也同樣。
實例封裝代碼:Sub 點擊_小房子 Call 操作_點擊并延遲_秒 (1023,2236,3)End SubFunction 提示(test) TracePrint test ShowMessage testEnd FunctionFunction 操作_點擊并延遲_秒(x, y, num) Tap x, y Delay int(num) * 1000End Function
3.檢測是否在主界面使用顏色命令:FindMultiColor
- 定位大概6個特征點,可看到主界面的3種貨幣的位置是固定的,所以選取這里。并且選取范圍,減少匹配時間。
- 函數需要返回值,故類型為Function,后續直接調用即可。
- 函數名沒有固定要求,個人喜歡這種格式,方便調用和維護,查找
實例代碼:Function 檢測_檢查是否在主界面 Dim intX,intY Dim num = 1 FindMultiColor 977,728,1069,1528,"00C6FF","0|-27|00C6FF,-8|-330|FF9000,-34|-346|FD8E00,-11|-677|1589E6,-4|-657|23649A",0,0.8,intX,intY If intX > -1 And intY > -1 Then call 提示 ("提示:在主界面~") num = 1 Else call 提示 ("提示:不在主界面!") num = 0 End If 檢測_檢查是否在主界面 = numEnd Function
3.進入卡牌包界面使用觸摸命令:tap
- 在成功檢測到在主界面后,進行一系列的點擊動作,并根據自己設備的性能選擇合適的延遲時間
- 需要使用到 if 判斷,并對比函數的返回值,返回為真,那么就進行后續操作。
實例代碼: If 檢測_檢查是否在主界面() = 1 Then call 提示 ("操作:進入卡牌包中") Call 操作_點擊并延遲_秒 (1015,1957,3) //右上角 Call 操作_滑動并延遲_秒 (880,213,200,236,1,3) Call 操作_點擊并延遲_秒 (371,209,3) //卡牌包 Call 操作_滑動并延遲_秒(438, 2026, 419, 496, 1, 3) Else call 提示 ("異常:不在主頁面") Exit Function End If
4.開始循環使用 for 循環內部進行 if 判斷
- 卡牌領取是有上限的,所以進行固定次數的循環
- 使用 if 判斷是否還有次數,判斷條件為出現紅色字體
實例代碼: //開始循環看廣告 Call 提示 ("操作:循環看廣告") Call 操作_點擊并延遲_秒 (115,1892,2) //第一次點擊 For 5 If CmpColorEx("119|1018|4D05D3,126|1065|4F04DC,107|1087|4D04D5,70|1124|DDD9D8,117|1201|400C89,126|1253|4509A5",0.8) = 0 Then Call 操作_點擊并延遲_秒 (111,1161,3) Call 操作_點擊并延遲_秒(111, 1884, 60) Call 操作_點擊并延遲_秒(965,2084, 3) //退出 Call 操作_點擊并延遲_秒(965,2084, 3) Call 操作_點擊并延遲_秒 (111,1884,3) //右下角繼續 End If Next
5.完成后返回主界面使用觸摸命令:tap
- 很基礎的點擊,注意延遲時間即可。
實例代碼: //返回桌面 Call 提示 ("操作:任務完成,返回桌面") Call 點擊_關閉卡牌包 () Call 點擊_小房子 () Call 提示 ("完成任務:每日廣告碎片")
6.此時就已經完成功能,大概70行
關鍵詞: