-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathautoGameNew.py
More file actions
executable file
·157 lines (142 loc) · 5.63 KB
/
autoGameNew.py
File metadata and controls
executable file
·157 lines (142 loc) · 5.63 KB
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
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
from GlobalVariable import GlobalEnvironment
from enum import Enum
import time
import gc
import threading
import thread
import traceback
import random
State = Enum("State", 'Idle ReadyToEntryEndlessMode EndlessModeRankings EndlessModeAttacking EndlessModeReliveState EndlessModeGetGiftsState ContinueEndlessModeState')
cloverState = State.Idle
SAME_AS_PRECENT = 0.9
packageName = "com.tencent.clover"
activityName = "com.tencent.clover.Clover"
def clickButton(buttonPosition):
global globalEnvironment
print "clickButton (",buttonPosition[0],buttonPosition[1],")"
globalEnvironment.device.touch(buttonPosition[0], buttonPosition[1], MonkeyDevice.DOWN_AND_UP)
def gotoNextScenery():
global globalEnvironment
global cloverState
print "gotoNextScenery", cloverState
if (cloverState == State.Idle) or (cloverState == State.ReadyToEntryEndlessMode):
time.sleep(0.5)
clickButton(globalEnvironment.endlessModeButtonPosition)
return
if cloverState is State.EndlessModeRankings:
time.sleep(0.5)
clickButton(globalEnvironment.offenseButtonPosition)
return
if cloverState is State.EndlessModeReliveState:
time.sleep(0.5)
clickButton(globalEnvironment.notRelivePosition)
return
if cloverState is State.EndlessModeGetGiftsState:
time.sleep(0.5)
clickButton(globalEnvironment.getGiftsButtonPosition)
return
def setCloverState(state):
global cloverState
print "setcloverState ", state
cloverState = state
def getStateFromImage():
global globalEnvironment
sourceImage = globalEnvironment.device.takeSnapshot()
for i in range(0,7):
heBombsImage = sourceImage.getSubImage(globalEnvironment.HEBombsRect)
if heBombsImage.sameAs(globalEnvironment.HEBombsImageOrign, 0.2):
setCloverState(State.EndlessModeAttacking)
break
notReliveButtonImage = sourceImage.getSubImage(globalEnvironment.notReliveButtonRect)
if notReliveButtonImage.sameAs(globalEnvironment.NotReliveButtonImageOrign, SAME_AS_PRECENT):
setCloverState(State.EndlessModeReliveState)
break
endlessModeImage = sourceImage.getSubImage(globalEnvironment.endlessModeRect)
if endlessModeImage.sameAs(globalEnvironment.EndlessModeButtonImageOrign, SAME_AS_PRECENT):
setCloverState(State.ReadyToEntryEndlessMode)
break
offenseButtonImage = sourceImage.getSubImage(globalEnvironment.offenseButtonRect)
if offenseButtonImage.sameAs(globalEnvironment.OffenseButtonImageOrign, SAME_AS_PRECENT):
setCloverState(State.EndlessModeRankings)
break
getGiftsButtonImage = sourceImage.getSubImage(globalEnvironment.getGiftsButtonRect)
if getGiftsButtonImage.sameAs(globalEnvironment.GetGiftsButtonImageOrign, SAME_AS_PRECENT):
setCloverState(State.EndlessModeGetGiftsState)
break;
continueButtonImage = sourceImage.getSubImage(globalEnvironment.continueButtonRect)
if continueButtonImage.sameAs(globalEnvironment.ContinueButtonImageOrign):
setCloverState(State.ContinueEndlessModeState)
break
del sourceImage
gc.collect()
def avoidBombs():
print "avoidBombs"
moveToRight = False
global xPosition
global yPositon
for i in range(0,50):
xoffset = random.randint(20, 200)
yoffset = random.randint(10,100)
if moveToRight:
xPositionEnd = xPosition+ xoffset
yPositonEnd = yPositon + yoffset
else:
xPositionEnd = xPosition - xoffset
yPositonEnd = yPositon - yoffset
if xPositionEnd < 0 or yPositonEnd < 0 or yPositonEnd < 800 or yPositon > 1600:
startPosition = (xPosition, yPositon)
endPosition = (550, 1560)
globalEnvironment.device.drag( startPosition, endPosition, 0.5, 100)
xPosition = 550
yPositon = 1560
continue
print "moveToRight",moveToRight, "start (",xPosition,",",yPositon,"). EndPosition (",xPositionEnd,",",yPositonEnd,")"
globalEnvironment.device.drag((xPosition, yPositon), (xPositionEnd, yPositonEnd),0.5, 100)
if xPositionEnd > 900:
moveToRight = False
elif xPosition < 300:
moveToRight = True
xPosition = xPositionEnd
yPositon = yPositonEnd
def battling():
global globalEnvironment
global cloverState
shouldBeStop = False
time.sleep(15)
global xPosition
global yPositon
xPosition = 550
yPositon = 1560
while True:
print "battling", cloverState
getStateFromImage()
if cloverState != State.EndlessModeAttacking:
break
avoidBombs()
def startGame():
global globalEnvironment
global cloverState
isAttacking = False
while True:
getStateFromImage()
time.sleep(2)
print "in startGame", cloverState
if cloverState is State.EndlessModeAttacking:
battling()
if cloverState is State.ContinueEndlessModeState:
clickButton(globalEnvironment.continueButtonPosition)
break
gotoNextScenery()
# if cloverState is State.EndlessModeAttacking:
# thread.start_new_thread(battling, (globalEnvironment))
# return
if __name__ == "__main__":
global isAttacking
global cloverState
global globalEnvironment
globalEnvironment = GlobalEnvironment()
if not globalEnvironment.device:
raise Exception("Cannot connect to device")
cloverState = State.Idle
startGame()