//用户使用时修改部分:
//建筑标号顺序为从下到上,从左到右,与小键盘顺序一致
Dim mainups = Array(7) //待升级建筑,中间用英文逗号隔开
Dim epics = Array(3,4,5,8) //橙色建筑,如果不强求橙色,可以把所有建筑写进去
Dim UpDelay = 20 //每几次收集金币检查一次可否升级
//程序部分:
//子程序结构:
//Adjust : XY坐标修正
//Up: 升级单个建筑
//CheckGoods 检查货物
//Harvest 收取金币
//操作结束延时写在子程序内部
Dim ScreenX,ScreenY //屏幕分辨率信息
Dim X(3), Y(3), Z(9,2) //XY为货物的坐标,Z为建筑物位置信息
Dim UPCNT = 0 //收集金币计数器
Call Adjust()
While True
Call CheckGoods()
Call Harvest()
UPCNT = UPCNT + 1
TracePrint UPCNT
If UPCNT >= UpDelay Then
Call UpAll()
End If
Wend
Sub UpAll()
Dim i
UPCNT = 0
For Each i In mainups
Call Up(Z(i, 1), Z(i, 2))
Next
End Sub
Sub Up(X, Y)
Dim ScreenX,ScreenY
ScreenX = GetScreenX()
ScreenY = GetScreenY()
Tap 970*ScreenX\1080, 1145*ScreenY\1920 //进入升级
Delay 500
Tap X, Y //点击建筑
Delay 300
Dim intX, intY, res
res = FindColor(900*ScreenX\1080,1670*ScreenY\1920, 990*ScreenX\1080, 1700*ScreenY\1920, "FFFFFF", 0, 1.0, intX, intY)
//如果没有找到,intX和intY的值都会被置为-1
If res > -1 Then
Tap 870*ScreenX\1080, 1750*ScreenY\1920
ShowMessage "升级一次"
Delay 130
End If
Tap 970*ScreenX\1080, 1145*ScreenY\1920 //退出升级
Delay 300
End Sub
Sub Adjust()
ScreenX = GetScreenX()
ScreenY = GetScreenY()
X(1) = 660*ScreenX\1080
X(2) = 825*ScreenX\1080
X(3) = 975*ScreenX\1080
Y(1) = 1635*ScreenY\1920
Y(2) = 1555*ScreenY\1920
Y(3) = 1470 * ScreenY \ 1920
Z(1,1) = 300*ScreenX\1080
Z(1,2) = 1184*ScreenY\1920
Z(2,1) = 550*ScreenX\1080
Z(2,2) = 1061*ScreenY\1920
Z(3,1) = 800*ScreenX\1080
Z(3,2) = 961*ScreenY\1920
Z(4,1) = 300*ScreenX\1080
Z(4,2) = 935*ScreenY\1920
Z(5,1) = 550*ScreenX\1080
Z(5,2) = 810*ScreenY\1920
Z(6,1) = 800*ScreenX\1080
Z(6,2) = 687*ScreenY\1920
Z(7,1) = 300*ScreenX\1080
Z(7,2) = 681*ScreenY\1920
Z(8,1) = 550*ScreenX\1080
Z(8,2) = 568*ScreenY\1920
Z(9,1) = 800*ScreenX\1080
Z(9,2) = 447*ScreenY\1920
End Sub
Sub CheckGoods()
Dim INDEX, building
For INDEX = 1 To 3
TouchDown X(INDEX), Y(INDEX)
Delay 300
Dim IntX,IntY
FindColor 0,0,0,0,"80FFFF|81FFFF|80FF00",0,1.0,intX,intY
If intX > -1 Then
For Each building In epics
If Abs(intX - Z(building, 1)) < 30 And Abs(intY - Z(building, 2)) < 30 Then
Delay 100
FindColor 0, 0, 0, 0, "80FFFF|81FFFF|80FF00", 0, 1.0, intX, intY
If intX = -1 Then
TracePrint "二次检查失败"
Exit For
End If
Delay 100
FindColor 0, 0, 0, 0, "80FFFF|81FFFF|80FF00", 0, 1.0, intX, intY
If intX = -1 Then
TracePrint "二次检查失败"
Exit For
End If
ShowMessage "找到史诗货物"
TouchMove intX + 50*ScreenX\1080, intY
Exit For
End If
Next
Delay 100
End If
TouchUp
Next
Delay 300
End Sub
Sub Harvest()
TouchDown 200*ScreenX\1080, 1280*ScreenY\1920
TouchMove 1000*ScreenX\1080, 825*ScreenY\1920
TouchMove 820*ScreenX\1080, 700*ScreenY\1920
TouchMove 170*ScreenX\1080, 1045*ScreenY\1920
TouchMove 210*ScreenX\1080, 760*ScreenY\1920
TouchMove 900*ScreenX\1080, 400*ScreenY\1920
TouchUp
Delay 300
End Sub
从一个别的nga老哥那里看到的代码,简单的重构了一下原本基本上堆在一起的代码并加了一些注释,优化了指定升级建筑的逻辑,添加了只收的指定建筑的相关代码,我觉得这么写对于使用者来说可能会更加友好一点