• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

返回列表 12345678» / 29
发新话题 回复该主题

从零学起之安卓实战篇《天天酷跑好友送心》 [复制链接]

1#
本帖最后由 兄弟工程师05 于 2014-9-16 16:25 编辑

『教程图片需登录论坛方可查看』



本期主题:实战源码讲解
脚本功能:好友自动送心。
使用要求:请在 “好友列表” 或 “中途操作界面” 启动脚本均可。
环境支持:分辨率:480*854、540*960、720*1280、1080*1920、1080*1800、480*800、800*1280(不支持则会有相关提示
脚本步骤:对好友界面中的好友列表,进行一个个点击送心操作,直到最后一个送完。


科普:从零学起之安卓篇《如何在安卓模拟器中进行多分辨率开发调试》

『进入正题』

一、脚本思路。(确认功能需求的每一个步骤环节
1、打开好友列表,触屏点击红心。
您所在的用户组无法下载或查看附件

2、提示弹窗点击(不发送)按钮返回好友列表。
您所在的用户组无法下载或查看附件

3、当页没有红心则划动屏幕,寻找后面的红心点击。
4、到底如有下一页则翻页继续。
您所在的用户组无法下载或查看附件

5、到底如没下一页则切换好友排行榜继续。
您所在的用户组无法下载或查看附件

6、如此循环,到最后一个好友都完成送心。
7、如在其他画面,则点返回,返回好友列表。

您所在的用户组无法下载或查看附件


二、逻辑构建。(构建脚本的大脑
关于逻辑结构的创建,这里送大家一句话:手动怎么做,脚本跟着做。

手动怎么做:这里不单指人为的手动操作,是包括你整个人会如何做,看到什么内容,想到什么结论,做出什么操作。

脚本跟着做:具体解释就是,先做什么,后做什么,第一步操作,然后确认结果,成功了做什么,失败了则做什么,或还有第三种与更多种结果,不同结果做不同操作反馈。一层层合理的逻辑安排,组成完善的一个脚本主线框架(脚本大脑),使脚本运行起来实现类似智能化的操作,因为你需要把每一个会出现的情况都考虑进去,并写成代码方式由脚本进行识别,进行选择,然后执行实现功能效果。
记得是每一种操作中会出现的情况,不然脚本遇到无法识别情况结果显而易见


//图色判断到好友列表则进入下一步判断。
如果 判断(好友列表)=成功
//图色范围判断到红心图标则点击,执行送心操作。
如果 判断点击(红心图标)=成功
//否则图色判断到下页图标则点击,执行翻页操作。
否则如果 判断点击(下页图标)=成功
//否则图色判断到到底图标则进入下一步判断。
否则如果 判断(到底图标)=成功
//判断排行榜标题,确认当前哪个排行榜,执行切换下一个排行榜操作。
如果 切换排行榜(标题范围)=失败
//如果已是最后一个“进击模式”排行榜,则说明全部送心完成。
弹窗提示 "已经全部刷新完毕!"
延时 1000 //1000毫秒
结束脚本 //全部好友送心完成,脚本停止。
结束 如果
//没结束,则继续循环。
否则
//没红心图标,也没下一页图标,也没到底图标,那么就划动好友列表。
调用 触屏划动(划动距离)
结束 如果
//否则图色判断送心成功提示则点击(不发送),执行关闭提示返回好友列表。
否则如果 判断点击(送心成功)=成功
//否则图色判断返回按钮图标则点击,执行返回界面功能,回到好友列表。
否则如果 判断点击(返回图标)=成功
//有始有终,到这里结束以上判断,开始循环重新处理。
结束 如果


三、知识要点。(很重要,请认真阅读

以上已经把功能需求描述完毕,每一个功能需求的具体步骤分析也描述完毕,整体逻辑框架也搭建完毕。
那么这里我要讲的是,如何去实现脚本这些功能。


总结:知道要什么,知道做什么,知道用什么方式可以做到。(请原谅我这么多废话)

首先,我们知道了要什么,一种在手机上的自动化辅助操作,完成自动送心操作步骤。
其次,我们知道了要怎样去操作可以实现这些功能,获取信息做判断,先做什么,后做什么,遇到不同情况结果后续再做什么,组成一个完善的逻辑循环。
最后,我们需要知道就剩余三点,如何实现。
1、需要获取什么信息,如何获取这信息,都有哪些方式来获取。
2、如何对获取信息进行判断,条件判断后做出选择。
3、根据判断结果,如何才可以实现功能效果。


这里就需要介绍下,按键脚本基本功能:通过获取屏幕的图色信息,根据结果做出判断选择,由此执行对应键鼠或手机触屏操作命令等来实现自动化智能操作效果。
1、图色获取命令:(找图,找色)
从零学起之安卓篇《按键精灵安卓版找图找色应用汇总介绍》
从零学起之安卓篇《版本1.5.1命令更新介绍》
从零学起之科普篇《偏色与相似度汇总介绍》

2、条件判断命令:(条件对比)
命令名称:If 如果..则
命令功能:判断表达式
命令参数:参数1 条件型,表达式
返回值:
例子1:
  1. i=0
  2. If i=0 Then
  3. Msgbox "条件判断符合被通过!!"
  4. End If
  5. //通过判断表达式的取值,来执行后面的动作或控制
复制代码
例子2:
  1. i=1
  2. If i=0 Then
  3. Msgbox "条件判断符合被通过!!"
  4. ElseIf i=1 Then
  5. Msgbox "否则条件判断符合被通过!!"
  6. Else
  7. Msgbox "否则!!"
  8. End If
  9. //通过判断表达式的取值,来执行后面的动作或控制
复制代码

从零学起之基础篇《循环命令应用汇总介绍》
3、触屏操作命令:(对手机进行触屏点击操作等)
按键精灵之安卓篇《按键宝典安卓版命令大全》
常用操作命令都在命令大全集合里,大家请自行下载查阅,关于脚本实战编写大家可以查看总帖目录的实战篇。


『上期实例教学』
从零学起之安卓实战篇《全民打怪兽循环冒险》
从零学起之安卓实战篇《关于刀塔传奇开局与日常思路》
从零学起之安卓实战篇《天天酷跑好友送心》


『源码抢鲜看,看完点个赞!』

  1. /////////////////////////////////////////////////////////////////////////////
  2. '功能描述:在好友列表启动脚本即可自动开始送心操作。
  3. '支持9:16分辨率:480*854、540*960、720*1280、1080*1920
  4. '支持3: 5分辨率:480*800、800*1280、1080*1800
  5. '本作多点找色特征均在720*1280分辨率下获取进行缩放比例计算
  6. '从零学起之安卓篇《如何在安卓模拟器中进行多分辨率开发调试》
  7. 'http://bbs.anjian.com/thread-537192-1-1.html
  8. /////////////////////////////////////////////////////////////////////////////
  9. '从零学起之安卓实战篇《天天酷跑好友送心》
  10. 'http://bbs.anjian.com/thread-536548-1-1.html
  11. /////////////////////////////////////////////////////////////////////////////
  12. //脚本作者:荆棘
  13. //更新日期:2014年08月21日
  14. /////////////////////////////////////////////////////////////////////////////
  15. Randomize
  16. Dim IntX,IntY
  17. Dim win_x,win_y
  18. win_x = GetScreenX()
  19. win_y = GetScreenY()
  20. TracePrint "当前分辨率:" & win_x & "*" & win_y
  21. '设置浮窗移动到中间
  22. SetControlBarPos 0.5
  23. /////////////////////////////////////////////////////////////////////////////
  24. Dim 好友列表(),红心图标(),送心成功(),到底图标(),下页图标(),划动距离(),标题范围(),返回图标()
  25. /////////////////////////////////////////////////////////////////////////////
  26. '比例计算
  27. Dim win_w,win_h
  28. win_w=win_x/720
  29. win_h=win_y/1280
  30. TracePrint "屏幕比例:" & win_w & ":" & win_h
  31. If Abs(win_w-win_h) < 0.01 Then'比例偏差小于0.01
  32. TracePrint "720*1280比例"
  33. 好友列表=比例换算(Array(65,160,"FFEBD6","0|30|CE6910,-30|70|BD6D10"))
  34. 红心图标=比例换算(Array(110,760,510,850,"423DEF","-18|35|10C6FF,22|55|EFF7F7"))
  35. 送心成功=比例换算(Array(170,330,"D69E00","0|420|00BEEF,100|60|FFF3E6"))
  36. 到底图标=比例换算(Array(250,160,510,210,"735529","-15|-15|D6AA31,-2|98|FFEBCE,-62|-2|DEDBB5"))
  37. 下页图标=比例换算(Array(140,455,510,490,"C58E5A","15|0|FFF7EF,-25|142|DEDFBD,90|-8|CE8E21,110|-193|FFEBCE,112|-290|7B5531"))
  38. 划动距离=比例换算(Array(160,540,470,540))
  39. 标题范围=比例换算(Array(560,220,570,320,"F7E29C",250))
  40. 返回图标=比例换算(Array(599,140,"EFEFEF","0|20|EFEFEF,21|20|FFC611"))
  41. End If
  42. /////////////////////////////////////////////////////////////////////////////
  43. If IsNumeric(好友列表(0))=False Then
  44. '比例计算
  45. win_w=win_x/480
  46. win_h=win_y/800
  47. 'TracePrint win_w & "-" & win_h & "=" & Abs(win_w-win_h)
  48. If Abs(win_w-win_h) < 0.1 Then'比例偏差小于0.1
  49. TracePrint "480*800比例"
  50. 好友列表=比例换算(Array(42,80,"FFE9CE","0|20|C7680E,0|45|E58F19"))
  51. 红心图标=比例换算(Array(70,480,340,540,"423DEF","-12|25|19CAFF,13|40|EFF9FD"))
  52. 送心成功=比例换算(Array(110,200,"D89A03","0|280|00BBF0,50|0|FFF4E8"))
  53. 到底图标=比例换算(Array(160,75,340,115,"78552B","-11|-11|D8A82D,-4|66|FFE7C8,-19|136|C5821B,-73|194|F0EEE3"))
  54. 下页图标=比例换算(Array(80,260,360,390,"C08C56","10|0|FFF7EF,-11|22|B8A69A,-9|49|B9A69A,-1|82|B8A79A"))
  55. 划动距离=比例换算(Array(100,300,305,300))
  56. 标题范围=比例换算(Array(370,115,380,195,"F7E29C",168))
  57. 返回图标=比例换算(Array(392,65,"EEEEEE","0|15|EEEEEE,14|15|FFC717"))
  58. End If
  59. End If
  60. /////////////////////////////////////////////////////////////////////////////
  61. If IsNumeric(好友列表(0))=False Then
  62. TracePrint "暂不支持当前" & win_x & "*" & win_y & "分辨率,请联系作者咨询!"
  63. ShowMessage "暂不支持当前" & win_x & "*" & win_y & "分辨率,请联系作者咨询!"
  64. Delay 1000
  65. EndScript
  66. End If
  67. /////////////////////////////////////////////////////////////////////////////
  68. '调试区(不解释)
  69. //KeepCapture
  70. //TracePrint "好友列表"
  71. //TracePrint 判断(好友列表)
  72. //TracePrint IntX & "|" & IntY
  73. //TracePrint "红心图标"
  74. //TracePrint 判断(红心图标)
  75. //TracePrint IntX & "|" & IntY
  76. //TracePrint "送心成功"
  77. //TracePrint 判断(送心成功)
  78. //TracePrint IntX & "|" & IntY
  79. //TracePrint "到底图标"
  80. //TracePrint 判断(到底图标)
  81. //TracePrint IntX & "|" & IntY
  82. //TracePrint "下页图标"
  83. //TracePrint 判断(下页图标)
  84. //TracePrint IntX & "|" & IntY
  85. //TracePrint "返回图标"
  86. //TracePrint 判断(返回图标)
  87. //TracePrint IntX & "|" & IntY
  88. //ReleaseCapture
  89. //Call 触屏划动(划动距离)
  90. //TracePrint 切换排行榜(标题范围)
  91. //EndScript
  92. /////////////////////////////////////////////////////////////////////////////
  93. 'UI参数获取(不解释)
  94. '无
  95. /////////////////////////////////////////////////////////////////////////////
  96. '主线循环
  97. Do
  98. KeepCapture
  99. If 判断(好友列表)=True Then
  100. TracePrint "好友列表"
  101. If 判断点击(红心图标)=True Then
  102. TracePrint "红心图标"
  103. ElseIf 判断点击(下页图标)=True Then
  104. TracePrint "下页图标"
  105. ElseIf 判断(到底图标)=True Then
  106. TracePrint "到底图标"
  107. If 切换排行榜(标题范围)=False Then
  108. TracePrint "已是最后排行榜"
  109. ShowMessage "已经全部刷新完毕!"
  110. Delay 1000
  111. EndScript //全部好友送心完成,脚本停止!
  112. End If
  113. //没结束,则继续循环
  114. Else
  115. //没红心图标,也没下一页图标,也没到底图标,那么就划动好友列表
  116. TracePrint "触屏划动"
  117. Call 触屏划动(划动距离)
  118. End If
  119. ElseIf 判断点击(送心成功)=True Then
  120. TracePrint "送心成功"
  121. ElseIf 判断点击(返回图标)=True Then
  122. TracePrint "返回图标"
  123. End If
  124. Delay 500
  125. Loop
  126. /////////////////////////////////////////////////////////////////////////////
  127. '功能模块(跟进当前脚本需求,专门编写)
  128. Function 切换排行榜(数组特征)
  129. 切换排行榜=False
  130. Dim arr(),i
  131. arr=数组特征
  132. For i=0 To 1
  133. If FindCol(arr(0),arr(1)+i*arr(5),arr(2),arr(3)+i*arr(5),arr(4),0.9)=True Then
  134. Tap arr(0),arr(1)+(i+1)*arr(5)
  135. Delay 500
  136. 切换排行榜=True
  137. Exit For
  138. End If
  139. Next
  140. End Function
  141. /////////////////////////////////////////////////////////////////////////////
  142. '固定模块(通用型封装模块,基本常用脚本都需要用到的功能)
  143. Sub 触屏划动(数组特征)
  144. Dim arr(),n
  145. arr=数组特征
  146. n=Int(10*Rnd())'给划动操作增加些随机偏值
  147. TouchDown arr(0)+n,arr(1)+n,1
  148. TouchMove arr(2)+n,arr(3)+n,1
  149. Delay 500
  150. TouchUp 1
  151. Delay 100
  152. End Sub
  153. Function 判断(数组特征)
  154. 判断=False
  155. Dim arr()
  156. arr=数组特征
  157. '因为本作中只用到区域多点找色查找与固定起点多点比色
  158. '所以就简单判断下第四个值是否为数字,即可确认是区域多点找色还是固定多点比色
  159. If IsNumeric(arr(3))=True Then
  160. 判断=FindMultiCol(arr(0),arr(1),arr(2),arr(3),arr(4),arr(5),0.9)
  161. Else
  162. 判断=CmpMultiCol(arr(0),arr(1),arr(2),arr(3),0.9)
  163. End If
  164. End Function
  165. Sub 点击(数组坐标)
  166. Dim arr()
  167. arr=数组坐标
  168. Tap arr(0),arr(1)
  169. End Sub
  170. Function 判断点击(数组特征)
  171. 判断点击=False
  172. If 判断(数组特征)=True Then
  173. Tap IntX,IntY
  174. 判断点击=True
  175. End If
  176. End Function
  177. Function 比例换算(数组)
  178. Dim arr(),arr_bl(),i,n
  179. arr=数组
  180. arr_bl=Array(win_w,win_h)
  181. i=0
  182. For Each n In arr
  183. If IsNumeric(n)=True Then
  184. arr(i)=n*arr_bl(i Mod 2)
  185. ElseIf InStr(1,n,"|")>0 Then
  186. Dim arr1(),str,arr2()
  187. arr1=Split(arr(i),",")
  188. str=""
  189. For Each n In arr1
  190. arr2=Split(n,"|")
  191. str=str & arr2(0)*win_w & "|" & arr2(1)*win_h & "|" & arr2(2) & ","
  192. Next
  193. arr(i)=Left(str,Len(str)-1)
  194. Exit For
  195. End If
  196. i=i+1
  197. Next
  198. 比例换算=arr
  199. End Function
  200. /////////////////////////////////////////////////////////////////////////////
  201. '本脚本相关教程资料(都是重点,想学就把我的教程看完,如不懂可以各大按键群(官方群)里联系我)
  202. '从零学起之安卓篇《按键精灵安卓版找图找色应用汇总介绍》
  203. 'http://bbs.anjian.com/thread-523396-1-1.html
  204. '从零学起之基础核心《麻雀虽小五脏俱全》
  205. 'http://bbs.anjian.com/thread-509172-1-1.html
  206. /////////////////////////////////////////////////////////////////////////////
  207. '固定函数(通用型封装模块,核心函数功能,每个脚本必用,一般没新需求是不更改的)
  208. '固定坐标多点模糊找色
  209. Function CmpMultiCol(x,y,col,colstr,n)
  210. CmpMultiCol=False
  211. If CmpColor(x,y,col,n)=0 Then
  212. CmpMultiCol=FindMultiCol(x,y,x,y,col,colstr,n)
  213. Else
  214. CmpMultiCol=FindMultiCol(x-3,y-3,x+3,y+15,col,colstr,n)
  215. End If
  216. End Function
  217. '区域范围多点模糊找色
  218. Function FindMultiCol(x1,y1,x2,y2,col,colstr,n)
  219.     FindMultiCol=False
  220.     FindMultiColor x1,y1,x2,y2,col,colstr,0,n,IntX,IntY
  221.     If IntX > -1 Then FindMultiCol=True
  222. End Function
  223. '区域范围颜色查找
  224. Function FindCol(x1,y1,x2,y2,col,n)
  225. FindCol=False
  226. FindColor x1,y1,x2,y2,col,0,n,intX,intY
  227. If intX > -1 Then FindCol=True
  228. End Function
  229. //////////////////////////////////////////////////////////////////////////////////////////
  230. '作业
  231. //1、Function 比例换算(数组),原理描述完整写出来。
  232. //2、Function 判断(数组特征) 与 Sub 点击(数组坐标),各列出至少一个优点描述。
  233. //3、Sub 点击技能(),为什么里面代码这么写,列出至少两点。
  234. //4、Function CmpMultiCol(x,y,col,str,n),固定多点找色原理描述。
  235. //5、Function FindMultiCol(x1,y1,x2,y2,col,str,n),区域多点找色原理描述。
  236. //////////////////////////////////////////////////////////////////////////////////////////
  237. //脚本作者:荆棘
  238. //更新日期:2014年08月21日
复制代码

    已有3评分我要评分查看所有评分

    本主题由 超级版主 瑞祥幽冥狼 于 2023/6/15 14:57:48 执行 审核帖子 操作
    2#

    哦哦哦哦哦哦哦哦

    3#

    看看

    4#

    零学起之安卓实战篇《天天酷跑好友送心》修

    5#

    沙发!!!!!!!!!

    6#

    看看

    7#

    02.00.0.51515151

    8#


    9#

    学习一下, 刚写了个送心的, 和楼主的对比对比

    10#

    謝謝啦!

    11#

    sdferg[pkaehpth

    12#


    13#

    11111111111111111111

    14#

    不错 学习了!!!!!!

    15#

    顶顶顶顶顶顶顶顶顶

    16#

    学习下

    17#

    1564968165489

    18#

    学习了~

    19#

    源码抢鲜看,看完点个赞

    20#

    好友列表=比例换算(Array(42,80,"FFE9CE","0|20|C7680E,0|45|E58F19"))

    你好,我想问下ARRAY里面的数组是怎么得来的。。麻烦告诉下我可以吗

    发新话题 回复该主题