环境:
工具:手机/安卓模拟器,按键精灵手机助手系统版本: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行