学习游戏辅助制作 按键精灵循环点击无规律坐标
1、思路分析
1、 把我们要点击的坐标点都放到一个字符串变量中,例如:
字符串 = "345,56>214,36>77,88>89,21>39,78>11,20>67,34>80,51>13,63"
2、 写一个函数Sub StrToArr(字符串)用来转换分割字符串里的坐标。 咱们看这个字符串,它一共有9个坐标,分别用>这个符合分割开。 "345,56>214,36>77,88>89,21>39,78>11,20>67,34>80,51>13,63" 用split分割函数分割字符串,并且保存到数组arrx里:arrX = Split(字符串, ">")
3、 分割好字符串之后,arrx里存放的数据情况如下: arrx(0)=345,56 arrx(1)=214,36 arrx(2)=77,88 arrx(3)=89,21 arrx(4)=39,78 arrx(5)=11,20 arrx(6)=67,34 arrx(7)=80,51 arrx(8)=13,63
4、 分割好字符串之后,arry里存放的数据情况如下: arrx(0)=345,56 分割之后 : arry(0)=345 arry(1)=56 arrx(1)=214,36 分割之后 : arry(0)=214 arry(1)=36 arrx(2)=77,88 分割之后 : arry(0)=77 arry(1)=88 arrx(3)=89,21 分割之后 : arry(0)=89 arry(1)=21 以此类推…… 我们需要使用二维数组来记录: ArrMap(UBound(arrX),UBound(arrY)) ArrMap二维数组,第一维的元素个数 是分割 "> "这个符号的个数,即:坐标个数。 第二维的元素个数 是分割 ", "这个符号的个数,即:x坐标和y坐标 看表格更加直观:
分割 "> " arrX(0-8)
分割 ", " arry(0) x坐标
分割 ", " arry(1) y坐标
345,56
ArrMap(0,0) =345
ArrMap(0,1) =56
214,36
ArrMap(1,0) =214
ArrMap(1,1) =36
77,88
ArrMap(2,0) =77
ArrMap(2,1) =88
89,21
ArrMap(3,0) =89
ArrMap(3,1) =21
39,78
ArrMap(4,0) =39
ArrMap(4,1) =78
11,20
ArrMap(5,0) =11
ArrMap(5,1) =20
67,34
ArrMap(6,0) =67
ArrMap(6,1) =34
80,51
ArrMap(7,0) =80
ArrMap(7,1) =51
13,63
ArrMap(8,0) =13
ArrMap(8,1) =63
5、 调用Sub StrToArr(字符串) 分割坐标,循环点击坐标点。
代码
字符串 = "345,56>214,36>77,88>89,21>39,78>11,20>67,34>80,51>13,63"
Call StrToArr(字符串)
For i = 0 To UBound(ArrMap, 1)
MoveTo arrmap(i, 0), arrmap(i, 1)
TracePrint arrmap(i, 0)& ","&arrmap(i, 1)
LeftClick 1
Next
Sub StrToArr(字符串)
Dim i, j, arrX, arrY
arrX = Split(字符串, ">")
For i = 0 To UBound(arrX)
arrY = Split(arrX(i), ",")
For j = 0 To UBound(arrY)
If j = 0 and i = 0 Then
Redim ArrMap(UBound(arrX),UBound(arrY))
End If
ArrMap(i, j) = arrY(j)
next
Next
End Sub
注意: If j = 0 and i = 0 Then Redim ArrMap(UBound(arrX),UBound(arrY)) End If 这里为什么要在j和i都等于0的时候,定义数组ArrMap的维数和元素个数呢? 因为当j=0 and i=0 的时候,循环才刚刚开始,而二维数组必须要定义才能使用,所以我们需要在循环开始的时候定义,并且,只定义一次。
6、方法二
字符串 = "345,56>214,36>77,88>89,21>39,78>11,20>67,34>80,51>13,63"
坐标 = Split(字符串, ">")
For i = 0 To UBound(坐标)
Execute "MoveTo " & 坐标(i)
MsgBox 坐标(i)
Next
这里使用了vbs的 Execute语句 :执行一个或多个指定的语句。 将Moveto 坐标(i) 直接转换为可执行语句, 是一种简单 暴-力的解决方法,大赞!