按键精灵手机助手之实战篇(三)通用方法

本文介绍了按键精灵手机助手脚本编写中的通用方法,包括多屏幕适配、随机点击、随机滑动、图色方法和文字识别等,提供了一种整合与封装的方法论。
摘要由CSDN通过智能技术生成

前言

        本章讲述脚本编写前的一些通用方法的整合,以及一些注意事项,例如:多屏幕适配、随机点击、随机滑动、图色方法、文字识别等通用方法的封装。

通用方法

        下面是我个人比较喜欢使用的通用方法:

Dim 比例系数X,比例系数Y,区域系数,当前分辨率 = "未知"
Dim intX,intY,颜色数量,返回值,isLogOpen,识别文字

Call 分辨率初始化()
Delay 2000

// ****************************************************** 业务下面写


// 点击这样写
Tap10 100, 100   //在横坐标 纵坐标中 +-10 的范围随机点击

If 指定区域颜色是否大于给定值(646,1211,702,1258, "6392B5-101010", 1.0, 188) Then 
	//发现颜色值满足条件
End If

// 等等等。。。。

// ****************************************************** 自用功能
Function 输出(内容)
	TracePrint 内容
	ShowMessage 内容
End Function


Sub 分辨率初始化()
    Dim 屏幕横坐标X,屏幕纵坐标Y
    SetControlBarPos 0,0  //把悬浮窗移动到屏幕右上角
    
    TracePrint SetDictEx(0, "Attachment:wendao.txt")//设置附件中的s1.txt文档为1号字库
    TracePrint UseDict(0)//这里开始切换到2号字库进行识别

    屏幕横坐标X=GetScreenX()
    屏幕纵坐标Y = GetScreenY()
    比例系数X = 屏幕横坐标X / 720
    比例系数Y = 屏幕纵坐标Y / 1280
    区域系数 = ((100 * 比例系数X) * (100 * 比例系数Y)) / (100 * 100)
    Thread.SetShareVar "比例系数X", 比例系数X
    Thread.SetShareVar "比例系数Y", 比例系数Y
    Thread.SetShareVar "区域系数", 区域系数 
    TracePrint "比例系数分别为:"&比例系数X&"---"&比例系数Y
    TracePrint 屏幕横坐标X,屏幕纵坐标Y
    If 屏幕横坐标X = 720 And 屏幕纵坐标Y = 1280 Then 
        当前分辨率 = "1280"
    ElseIf 屏幕横坐标X = 1080 And 屏幕纵坐标Y = 1920 Then
        当前分辨率 = "1920"
    ElseIf 屏幕横坐标X = 1440 And 屏幕纵坐标Y = 2560 Then
        当前分辨率 = "2560"
    End If
    
    If Round(屏幕纵坐标Y / 屏幕横坐标X, 1) = 1.8 Then 
        //16:9比例屏幕适配
        If 屏幕横坐标X <> 720 Then 
            TracePrint "设置等比例缩放"&Round(屏幕纵坐标Y / 屏幕横坐标X, 1)
            SetScreenScale 720,1280,0
        End If
		
        ShowMessage "欢迎使用清风★问道辅助,您当前屏幕分辨率为"&屏幕横坐标X&"*"&屏幕纵坐标Y&"属于辅助支持范围~"
        Delay 2000
        If 屏幕横坐标X < 720 Then 
            ShowMessage "您的屏幕小于720*1280部分功能无法正常使用~"
            Delay 2000
        End If
    Else 
        //这里要搞一套 5:3 的比例
        ShowMessage "您当前屏幕分辨率为" & 屏幕横坐标X & "*" & 屏幕纵坐标Y & "辅助暂不支持,非常抱歉~!"
        Delay 2000
        ShowMessage "您当前屏幕分辨率为" & 屏幕横坐标X & "*" & 屏幕纵坐标Y & "辅助暂不支持,非常抱歉~!"
        Delay 3000
        EndScript	
    End If
End Sub



Function 等待颜色出现(x1, y1, x2, y2,色值,相似度,颜色数量,等待时间)
    等待颜色出现 = False
    Dim i
    For i = 0 To 2*等待时间
        Delay 500
        If 指定区域颜色是否大于给定值(x1, y1, x2, y2, 色值, 相似度, 颜色数量) Then 
            等待颜色出现 = True
            Exit For
        End If
    Next 
End Function
//识别数字
Function 清风识别数字(x1,y1,x2,y2,色值,相似度)
    清风识别数字 = ""
    Dim 返回的字,比例x,比例y
    比例x = Thread.GetShareVar("比例系数X")
    比例y = Thread.GetShareVar("比例系数Y")
    If GetScreenX() = 720 Then 
    	返回的字 = SmartOcr(x1, y1, x2, y2, 色值)
    	If 返回的字 = "" Then 
        	返回的字=Ocr(x1,y1,x2,y2,色值,相似度)
    	End If
    Else 
    	返回的字=Ocr(Int(x1*比例x),Int(y1*比例y),Int(x2*比例x),Int(y2*比例y),色值,相似度)
    End If

    清风识别数字 = 返回的字
End Function
//按照比例判断給定区域颜色值是否大于多少
Function 指定区域颜色是否大于给定值(x1, y1, x2, y2, 颜色值, 相似度,是否大于xxx)
    Dim 数量,比例x,比例y,比例区域
    比例x = Thread.GetShareVar("比例系数X")
    比例y = Thread.GetShareVar("比例系数Y") 
    比例区域 = Thread.GetShareVar("区域系数") 
    指定区域颜色是否大于给定值 = False
    数量 = GetColorNum(x1*比例x,y1*比例y,x2*比例x,y2*比例y, 颜色值, 相似度)  //卷轴开启
//    TracePrint "实际数量:"&数量
    If 数量 > 0 Then 
        //		TracePrint "比例需求数量:"&区域系数 * 是否大于xxx
        If 数量 > 区域系数 * 是否大于xxx Then 
            指定区域颜色是否大于给定值 = True
        End If
    End If
End Function

Function 区域读取数字(x1,y1,x2,y2,色值)
    区域读取数字 = "无"
    Dim 字,比例x,比例y
    比例x = Thread.GetShareVar("比例系数X")
    比例y = Thread.GetShareVar("比例系数Y") 

    字 = SmartOcr(x1*比例x,y1*比例y,x2*比例x,y2*比例y, 色值)
    If 字 <> "" Then 
        区域读取数字 = 字
    End If
End Function

Function 指定区域找图(x1, y1, x2, y2, 图片名称, 色差, 模式, 相似度)
    Dim 比例x,比例y,比例区域,返回值
    比例x = Thread.GetShareVar("比例系数X")
    比例y = Thread.GetShareVar("比例系数Y")  
    返回值 = FindPic(x1 * 比例x, y1 * 比例y, x2 * 比例x, y2 * 比例y, 图片名称, 色差, 模式, 相似度, intX, intY)
    指定区域找图 = 返回值
End Function

Function 清风找图(x1, y1, x2, y2, 图片名称,偏色, 相似度,查找时间)  //秒为单位   1s查找10次
    Dim i,j,pic,图片名称s=""
    pic = Split(图片名称, "|")
    If UBOUND(pic) > 0 Then   // 说明有两张以上的图片
    	For j = 0 To UBOUND(pic)
    		图片名称s = 图片名称s & "Attachment:"&pic(j)&".png" & "|"
    	Next
    	图片名称s = Left(图片名称s, Len(图片名称s) - 1)
    Else 
    	图片名称s = 图片名称
    End If
    清风找图 = False
    For i = 1 To 查找时间 * 10
        FindPic x1, y1, x2, y2, 图片名称s, 偏色, 0, 相似度, intX, intY
        If intX > -1 Then 
            清风找图 = True
            Exit For
        End If	
        Delay 100
    Next
End Function

Function TapDefult(x, y)
    TapE x, y, 5, 5
End Function

Function Tap10(x,y)
    TapE x, y, 10, 10
End Function

Function TapButton(x,y)
    TapE x, y, 10, 40
End Function

Function TapE(x, y, mx,my)
    Dim rndX,rndY,de
    rndX = Int(mx * Rnd() + 1)
    rndY = Int(my * Rnd() + 1)
    de = Int(4 * Rnd() + 1)
    If de = 1 Then 
        x = x - rndX
        y = y - rndY
    ElseIf de = 2 Then
        x = x + rndX
        y = y + rndY
    ElseIf de = 3 Then
        x = x - rndX
        y = y + rndY
    ElseIf de = 4 Then
        x = x + rndX
        y = y - rndY
    End If
    //	TracePrint "输出坐标:" &x  &"," &y
    Tap x, y
End Function


Function Swipe5(x1, y1, x2, y2, t)
    SwipeE x1, y1, x2, y2, t,5
End Function

Function SwipeE(x1, y1, x2, y2, t,mt)
    Dim rndX,rndY,de
    rndX = Int(mt * Rnd() + 1)
    de = Int(4 * Rnd() + 1)
    If de = 1 Then 
        x1 = x1 - rndX
        y1 = y1 - rndX
        x2 = x2 - rndX
        y2 = y2 - rndX
    ElseIf de = 2 Then
        x1 = x1 + rndX
        y1 = y1 + rndX
        x2 = x2 + rndX
        y2 = y2 + rndX	
    ElseIf de = 3 Then
        x1 = x1 - rndX
        y1 = y1 - rndX
        x2 = x2 + rndX
        y2 = y2 + rndX	
    ElseIf de = 4 Then
        x1 = x1 + rndX
        y1 = y1 + rndX
        x2 = x2 - rndX
        y2 = y2 - rndX	
    End If
    Swipe x1, y1, x2, y2, t
End Function

Function TouchMoveE(x,y,mx,my,mark,t)
    Dim rndX,rndY,de
    rndX = Int(mx * Rnd() + 1)
    rndY = Int(my * Rnd() + 1)
    de = Int(4 * Rnd() + 1)
    If de = 1 Then 
        x = x - rndX
        y = y - rndY
    ElseIf de = 2 Then
        x = x + rndX
        y = y + rndY
    ElseIf de = 3 Then
        x = x - rndX
        y = y + rndY
    ElseIf de = 4 Then
        x = x + rndX
        y = y - rndY
    End If
    TouchMove x, y, mark, t
End Function

Function TouchDownE(x,y,mx,my,mark)
    Dim rndX,rndY,de
    rndX = Int(mx * Rnd() + 1)
    rndY = Int(my * Rnd() + 1)
    de = Int(4 * Rnd() + 1)
    If de = 1 Then 
        x = x - rndX
        y = y - rndY
    ElseIf de = 2 Then
        x = x + rndX
        y = y + rndY
    ElseIf de = 3 Then
        x = x - rndX
        y = y + rndY
    ElseIf de = 4 Then
        x = x + rndX
        y = y - rndY
    End If
    TouchDown x,y, mark
End Function

待更新。。。。敬请期待。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

s清风s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值