战舰少女R脚本制作

先上流程图

脚本流程图.jpg

脚本流程图.jpg

虽然之前没有接触过安卓脚本这边,不过在我浅薄的程序知识中,程序事实上在本质是相同的(除了汇编)。程序执行流程无外乎还是那几种循环与调用,程序的数据无外乎还是那几种数据结构。所以,写程序前,先画流程图,了解有哪些环节、哪些部分,再设计算法解决这些流程中需要的操作,最终debug。这些就是我们脚本制作的基本过程了。
在安卓脚本代码的书写中,我发现,与相对于其他程序涉及甚多的计算不同,脚本程序最重要的核心在于让程序了解到目前的处境,然后根据判断执行对应的方案。这样的一个流程基本覆盖整个脚本的每一个环节。我们需要让脚本如我们玩家在玩游戏时的状况一样,即“分析当前状况,做出反应”。
分析当前状况:我们需要的就是通过颜色判断、图像识别、文字识别,对当前画面做出分析。这个过程已经有现成的函数,直接调用,不复杂。根据函数返回值,我们就可以判断出当前状况。
做出反应:即模拟点击,一点都不复杂,只是找触控点有些繁琐。

以下为目前v.1版本代码,还有些bug以及子程序合并的问题,以后陆续修正。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
Delay 2000
Dim screenX,screenY,deviceID,colorDep,shijian,zhishou
screenX = GetScreenX()
screenY = GetScreenY()
colorDep = GetScreenColorDep()
deviceID = GetDeviceID()
shijian = Now()
zhishou=0
TracePrint "手机分辨率是:" & screenX & "*" & screenY & Chr(10) & "手机色深是:" & colorDep & "位" & Chr(10) & "手机IMEI号是:" & deviceID & Chr(10) & "当前时间是是:" & shijian
Delay 1000

//--------------------------------------------------------------------------------------------

While 1
If zhishou = 0 Then
TracePrint "初次启动,直接开始行动吧,gogogo!"
zhishou = zhishou + 1
TracePrint "先进行演习"
Call goyanxi()
Delay 4000
TracePrint "进行战役"
Call gozhanyi()

Else
TracePrint "非初次启动,进入无人值守模式,运行次数为" & zhishou & "次"
TracePrint "检查任务"
Delay 21600000

End If
Wend


//--------------------------------------------------------------------------------------------
Sub gozhanyi()
Dim jici=1
Touch 750, 1444, 100
Delay 4000
Touch 545, 105, 100
Delay 3000
Touch 100, 1550, 100
Delay 3000
Touch 740, 1480, 100
Delay 3000
While jici<10
Dim xzhou,buji,sunsang

Delay 3000
For xzhou = 60 To 750 Step 138
TracePrint "逐一检查补给情况"
buji = CmpColor(xzhou, 350, "101084", 0.8)
If buji > -1 Then
TracePrint "补给不足啦,赶紧补充"
Touch 970, 1800, 100
Delay 3000
Touch 290, 1250, 200
Delay 3000
Touch 880,1475,100
Exit For
End If
Delay 2000
Next
Touch 820, 1810, 100
Delay 2000
For xzhou = 258 To 1258 Step 200
TracePrint "逐一检查损失情况"
sunsang = CmpColor(458, xzhou, "0808BD", 0.8)
If sunsang > -1 Then
TracePrint "有船只受伤,赶紧修复"
Touch 640, xzhou, 100
Delay 2000

End If
Delay 2000
Next
Touch 880, 1475, 100
Delay 2000
TracePrint "一切ok,出发"
Touch 90,1100,100
Delay 2000
Call zhandou(5)
jici = jici + 1
Delay 2000
Touch 740, 1480, 100
Delay 3000
Wend



TracePrint"行动结束,回港!"
Touch 50, 100, 100

End Sub

//--------------------------------------------------------------------------------------------
Sub goyanxi()
Dim yzhou,cunzai,meiyou
Touch 750, 1444, 100
Delay 4000
Touch 830, 100, 100
Delay 3000
yzhou = 215
meiyou = 0
While meiyou < 5
TracePrint "寻找敌人"
cunzai = CmpColor(yzhou, 1580, "3A81E6|297DDE", 0.9)
If cunzai > -1 Then
TracePrint "找到演习对象,进入战斗"
Delay 500
Touch yzhou, 1690, 100
Delay 500
Call ttzhandou()
yzhou = 215
Else
TracePrint "没有发现,寻找下一个"
yzhou = yzhou + 175
meiyou = meiyou + 1
End If
Delay 1000
Wend
TracePrint"行动结束,回港!"
Touch 50, 100, 100

End Sub

//--------------------------------------------------------------------------------------------
Sub ttzhandou()
Dim xzhou,buji,sunsang
Delay 3000
For xzhou = 480 To 1480 Step 200
TracePrint "逐一检查补给情况"
buji = CmpColor(620, xzhou, "292DA4", 0.8)
If buji > -1 Then
TracePrint "补给不足啦,赶紧补充"
Touch 910, 1460, 100
Delay 2000
Touch 230, 910, 100
Delay 2000
Touch 820, 1810, 100
Delay 2000
Exit For
End If
Next

Delay 2000
For xzhou = 285 To 1360 Step 200
TracePrint "逐一检查损失情况"
sunsang = CmpColor(460, xzhou, "0808BD", 0.8)
If sunsang > -1 Then
TracePrint "有船只受伤,赶紧修复"
Touch 650, xzhou, 100
Delay 2000

End If
Delay 2000
Next
Touch 880,1475,100
TracePrint "一切ok,出发"
Delay 2000
Touch 100, 950, 100
Delay 6000
Call zhandou(2)


End Sub


Sub zhandou(zx)

Delay 4000
Dim yvdi,zhengxing,dengdai,jiance
yvdi = CmpColor(250, 1300, "428AEF", 0.8)
If yvdi > -1 Then
TracePrint "敌人发现!战斗!"
Touch 220, 1340, 100
Delay 2000
Else
TracePrint "似乎未找到,索敌不够啊"
Delay 2000

End If
Delay 2000
zhengxing = CmpColor(735, 1690, "52C642", 0.8)

If zhengxing > -1 Then
TracePrint "选择阵型"
Select Case zx
Case 1
Case 2
TracePrint "闪避"
Touch 735, 1690, 100
Delay 2000
Case 3
Case 4
Case 5
TracePrint "反潜"
Touch 150, 1550, 100
Delay 2000
End Select
End If

While 1

Delay 2000
TracePrint "等待发现夜战"
dengdai = CmpColor(370, 720, "3A86E6", 0.9)
Delay 2000
jiance = CmpColor(370, 720, "3A86E6", 0.9)
If dengdai >-1 and jiance >-1 Then
TracePrint "发现夜战"
Exit While

End If

Wend
Delay 2000
Touch 345, 1135, 100
Delay 5000
Touch 88, 1730, 100
Delay 5000
Touch 88, 1730, 100
Delay 2000
TracePrint "战斗结束,返回"


End Sub
-------------本文结束感谢您的阅读-------------