Function 自动寻路_八方位向(mbx,mby,tnumber)
Dim 识别坐标,坐标,坐标2()
Dim 次数 =0
Dim x坐标 =190
Dim y坐标 =193//(要修改,此处坐标为方向摇杆中点)
Do
/*识别坐标 =int(SmartOcr(555,1159,579,1279,"CFDCE6-202020|B5C0C9-121212|8A939A-121212|9DA7AF-121212"))//(要修改,此处为坐标数字范围/字体颜色/字体边缘颜色)//坐标 =Split(识别坐标,",")//坐标(0)=CLng(坐标(0))//坐标(1)=CLng(坐标(1))*/
坐标(0)=Int(SmartOcr(556,1175,581,1220,"CFDCE6-202020|B5C0C9-121212|8A939A-121212|9DA7AF-121212"))
坐标(1)=int(SmartOcr(556,1175,581,1220,"CFDCE6-202020|B5C0C9-121212|8A939A-121212|9DA7AF-121212"))
TracePrint 坐标(0),坐标(1)
If 坐标2(0)= 坐标(0)and 坐标2(1)= 坐标(1) Then
次数 = 次数 +1
Else
次数=0
End If
坐标2(0)= 坐标(0)
坐标2(1)= 坐标(1)
If Abs(坐标(0)- mbx)<=2andAbs(坐标(1)- mby)<=2 Then
Exit Do
End If
TouchDown x坐标, y坐标,1
If 坐标(0)> mbx and 坐标(1)> mby Then
'左上
TouchMove x坐标 +150, y坐标 -150,1, tnumber
ElseIf 坐标(0)> mbx and 坐标(1)< mby Then
'左下
TouchMove x坐标 -150, y坐标 -150,1, tnumber
ElseIf 坐标(0)< mbx and 坐标(1)> mby Then
'右上
TouchMove x坐标 +150, y坐标 +150,1, tnumber
ElseIf 坐标(0)< mbx and 坐标(1)< mby Then
'右下
TouchMove x坐标 -150, y坐标 +150,1, tnumber
Else
If Abs(坐标(0)- mbx)>Abs(坐标(1)- mby) Then
'左右移动
If 次数 >2 Then
If 坐标(1)> mby Then
'上
TouchMove x坐标 +150, y坐标,1, tnumber
Else
'下
TouchMove x坐标 -150, y坐标,1, tnumber
End If
次数 =0
Else
If 坐标(0)> mbx Then
'左
TouchMove x坐标, y坐标 -150,1, tnumber
Else
'右
TouchMove x坐标, y坐标 +150,1, tnumber
End If
End If
Else
'上下移动
If 次数 >2 Then
If 坐标(0)> mbx Then
'左
TouchMove x坐标, y坐标 -150,1, tnumber
Else
'右
TouchMove x坐标, y坐标 +150,1, tnumber
End If
次数 =0
Else
If 坐标(1)> mby Then
'上
TouchMove x坐标 +150, y坐标,1, tnumber
Else
'下
TouchMove x坐标 -150, y坐标,1, tnumber
End If
End If
End If
End If
TouchUp 1
Loop
End Function
Call 自动寻路_八方位向(285,606,300)
1 . 罗盘 - 八向方位模拟 - 自动寻路 2
参数1: 目标坐标X 整数型
参数2: 目标坐标Y 整数型
参数3: 罗盘移动时间 整数型
参数4: 目的坐标误差值 整数型
参数5: 罗盘移动上限 整数型
返回值: 成功返回 true 上限返回 false 逻辑型
//Time:2022年4月20日04:19:10 By:MemoryErHero
Function moveCompass(data)//函数名: 罗盘移动 传参类型: 数组
//例子: dataArr ={"左下",188,192,118,261, moveTime}//moveCompass(dataArr)
TracePrint "罗盘移动:",data(0)
Swipe data(1),data(2),data(3),data(4),data(5)
End Function
Function 自动寻路_八方位向限次(mbx, mby, moveTime, deviation, jobmax)/* 注释 : 精确度误差 +1左右,时间最好控制 500 毫秒以内.** 参数1: 目的坐标x 整数型
** 参数2: 目的坐标y 整数型
** 参数3: 罗盘移动时间 整数型
** 参数4: 目的坐标误差值 整数型
** 参数5: 罗盘移动上限 整数型
** 返回值: 成功返回 true 上限返回 false 逻辑型
*/
Dim MoveArr(9)//按键精灵数组从0开始,方便阅读所以选用下表1位起始
MoveArr[1]={"左下",188,192,118,261, moveTime}
MoveArr[2]={"左上",188,192,263,118, moveTime}
MoveArr[3]={"右下",188,192,117,118, moveTime}
MoveArr[4]={"右下",188,192,266,265, moveTime}
MoveArr[5]={"下",188,192,89,191, moveTime}
MoveArr[6]={"上",188,192,296,191, moveTime}
MoveArr[7]={"左",188,192,191,298, moveTime}
MoveArr[8]={"右",188,192,191,90, moveTime}
Dim nowX,nowY,cx1,xy1,jobNumber
Do
nowX =int(SmartOcr(556,1175,581,1220,"CFDCE6-202020|B5C0C9-121212|8A939A-121212|9DA7AF-121212"))
nowY =int(SmartOcr(557,1224,578,1271,"CFDCE6-202020|B5C0C9-121212|8A939A-121212|9DA7AF-121212"))
TracePrint "识别坐标: ",nowX,nowY
If Abs(mbx - nowX)<= deviation andAbs(mby - nowY)<= deviation Then
TracePrint"状态: 到达目的"
自动寻路_八方位向限次 =true
Exit Function
Else
jobNumber = jobNumber+1
TracePrint "已执行: "&jobNumber&" 次"
If jobNumber = jobmax Then
自动寻路_八方位向限次 =false
Exit Function
End If
End If
If Abs(mbx - nowX)>=1orAbs(mby - nowY)>=1 Then
If(mbx - nowX)>0and(mby - nowY)>0 Then
//TracePrint "右下"moveCompass(MoveArr[1])ElseIf(mbx - nowX)<0and(mby - nowY)<0 Then
//TracePrint "左上"moveCompass(MoveArr[2])ElseIf(mbx - nowX)<0and(mby - nowY)>0 Then
//TracePrint "右下"moveCompass(MoveArr[3])ElseIf(mbx - nowX)>0and(mby - nowY)<0 Then
//TracePrint "右上"moveCompass(MoveArr[4])ElseIf(mbx - nowX)=0and(mby - nowY)>0 Then
//TracePrint "下"moveCompass(MoveArr[5])ElseIf(mbx - nowX)=0and(mby - nowY)<0 Then
//TracePrint "上"moveCompass(MoveArr[6])ElseIf(mbx - nowX)>0and(mby - nowY)=0 Then
//TracePrint "左"moveCompass(MoveArr[7])ElseIf(mbx - nowX)<0and(mby - nowY)=0 Then
//TracePrint "右"moveCompass(MoveArr[8])
End If
End If
Loop
End Function
Call 自动寻路_八方位向限次(285,606,300,3,50)/*
Dim MoveArr(9)
Dim moveTime =0
MoveArr[1]={"左下",188,192,118,261, moveTime}
MoveArr[2]={"左上",188,192,263,118, moveTime}
MoveArr[3]={"右下",188,192,117,118, moveTime}
MoveArr[4]={"右下",188,192,266,265, moveTime}
MoveArr[5]={"下",188,192,89,191, moveTime}
MoveArr[6]={"上",188,192,296,191, moveTime}
MoveArr[7]={"左",188,192,191,298, moveTime}
MoveArr[8]={"右",188,192,191,90, moveTime}
For index =1 To 8
TracePrint "序号: "&index
For Each a In MoveArr[index]
TracePrint a()
Next
TracePrint "-------------------------------"
Next
moveCompass(MoveArr[1])*/