無意中看到按鍵精靈出Android版了,想了解一下,所以加入了內測,
由於腳本語法和VB差不多,所以上手很快,寫了個天天愛消除的腳本來練習一下,
很早就知道按鍵精靈了,但一直沒寫過其腳本,這個算是我的第一個按鍵精靈腳本吧!
/****
測試手機 小米1S
分辨率 480*854
遊戲方格 68*68
起始點 3,223
**/
Dim baseX,baseY,boxW,boxH
Dim I,X,Y,maxX,maxY,ret,Box(8, 8)
baseX = 3
baseY = 223
boxW = 68
boxH = 67.5
maxX = 7
maxY = 7
ret = 0
KeepScreen(true)
TracePrint "開始消除。。。"
'還沒加入判斷開始與結束的條件,使用時手工點停止
For I = 1 To 200
'TracePrint I
Call ReadBox()
For Y = 1 To maxY
For X = 1 To maxX
ret = CheckMove(X, Y, maxX, maxY)
Select Case ret
Case 1 '上移
Tap baseX+(X-1)*boxW+30,baseY+(Y-1)*boxH+30
Tap baseX+(X-1)*boxW+30,baseY+(Y-2)*boxH+30
Case 2 '右移
Tap baseX+(X-1)*boxW+30,baseY+(Y-1)*boxH+30
Tap baseX+X*boxW+30,baseY+(Y-1)*boxH+30
Case 3 '下移
Tap baseX+(X-1)*boxW+30,baseY+(Y-1)*boxH+30
Tap baseX+(X-1)*boxW+30,baseY+(Y)*boxH+30
Case 4 '左移
Tap baseX+(X-1)*boxW+30,baseY+(Y-1)*boxH+30
Tap baseX+(X-2)*boxW+30,baseY+(Y-1)*boxH+30
End Select
Next
Next
Next
TracePrint "消除結束!!!"
KeepScreen(false)
EndScript
'確定方塊往哪個方向移動(返回:0-無,1-上,2-右,3-下,4-左)
Function CheckMove(x, y, maxX, maxY)
Dim ret
ret = 0
'往上移
If ret=0 And y>1 Then
If x>2 And BoxMatch(x-2,y-1, x-1,y-1, x,y) Then
ret = 1
End If
If x>1 And x<maxX And BoxMatch(x-1,y-1, x,y, x+1,y-1) Then
ret = 1
End If
If x<maxX-1 And BoxMatch(x,y, x+1,y-1, x+2,y-1) Then
ret = 1
End If
If y>3 And BoxMatch(x,y-3, x,y-2, x,y) Then
ret = 1
End If
End If
'往右移
If ret=0 And x<maxX Then
If y>2 And BoxMatch(x+1,y-2, x+1,y-1, x,y) Then
ret = 2
End If
If y>1 And y<maxY And BoxMatch(x+1,y-1, x,y, x+1,y+1) Then
ret = 2
End If
If y<maxY-1 And BoxMatch(x,y, x+1,y+1, x+1,y+2) Then
ret = 2
End If
If x<maxX-2 And BoxMatch(x,y, x+2,y, x+3,y) Then
ret = 2
End If
End If
'往下移
If ret=0 And y<maxY Then
If x>2 And BoxMatch(x-2,y+1, x-1,y+1, x,y) Then
ret = 3
End If
If x>1 And x<maxX And BoxMatch(x-1,y+1, x,y, x+1,y+1) Then
ret = 3
End If
If x<maxX-1 And BoxMatch(x,y, x+1,y+1, x+2,y+1) Then
ret = 3
End If
If y<maxY-2 And BoxMatch(x,y, x,y+2, x,y+3) Then
ret = 3
End If
End If
'往左移
If ret=0 And x>1 Then
If y>2 And BoxMatch(x-1,y-2, x-1,y-1, x,y) Then
ret = 4
End If
If y>1 And y<maxY And BoxMatch(x-1,y-1, x,y, x-1,y+1) Then
ret = 4
End If
If y<maxY-1 And BoxMatch(x,y, x-1,y+1, x-1,y+2) Then
ret = 4
End If
If x>3 And BoxMatch(x-3,y, x-1,y, x,y) Then
ret = 4
End If
End If
CheckMove = ret
End Function
'判斷三個方塊能否連線
Function BoxMatch(x1, y1, x2, y2, x3, y3)
Dim b1, b2, b3
b1 = Box(x1, y1)
b2 = Box(x2, y2)
b3 = Box(x3, y3)
If BoxEquals(b1, b2) And BoxEquals(b1, b3) Then
BoxMatch = True
Else
BoxMatch = False
End If
End Function
'判斷兩個方塊是否一樣
Function BoxEquals(box1, box2)
If ColorDiff(box1,box2)<50 Then
BoxEquals = True
Else
BoxEquals = False
End If
End Function
'讀入方塊佈局
Sub ReadBox()
KeepCapture
Dim X,Y
For Y = 1 To maxY
For X = 1 To maxX
Box(X,Y)=GetPixelColor(baseX+(X-1)*boxW+30, baseY+(Y-1)*boxH+30)
Next
Next
ReleaseCapture
End Sub