|
@@ -9,7 +9,7 @@ import cv2
|
|
|
|
|
|
cv2.namedWindow('View', cv2.WINDOW_NORMAL)
|
|
|
DEFAULT_MONITOR = 3
|
|
|
-DEBUG = False
|
|
|
+DEBUG = True
|
|
|
scheduler = sched.scheduler(time, sleep)
|
|
|
dilation_kernel = np.array([[0,0,0], [1, 1, 1], [0,0,0]]).astype('uint8')
|
|
|
|
|
@@ -111,6 +111,7 @@ if __name__ == '__main__':
|
|
|
|
|
|
open_dino(sct)
|
|
|
gui.hotkey('fn', 'f11')
|
|
|
+ sleep(0.1)
|
|
|
|
|
|
playing_bbox, pw, ph = get_playing_bbox(sct)
|
|
|
|
|
@@ -125,19 +126,24 @@ if __name__ == '__main__':
|
|
|
dino_max_y = dino_pos[0].min()
|
|
|
dino_min_x = dino_pos[1].min()
|
|
|
|
|
|
- coef = 4
|
|
|
+ coef = 3
|
|
|
trigger_time = (int(dino_pos[0].mean()), dino_max_x + 18*pw)
|
|
|
- trigger_jump = (int(dino_pos[0].mean()), dino_max_x + 7*pw)
|
|
|
- trigger_feather = (dino_max_y-5*ph, dino_max_x + 11*pw)
|
|
|
+ trigger_jump = (int(dino_pos[0].mean()), dino_max_x + 8*pw)
|
|
|
+ trigger_feather_time = (dino_max_y-5*ph, dino_max_x + 23*pw)
|
|
|
+ trigger_feather_take = (dino_max_y-5*ph, dino_max_x + 13*pw)
|
|
|
|
|
|
enter_time = None
|
|
|
+ enter_time_feather = None
|
|
|
jump_time = None
|
|
|
+ take_time = None
|
|
|
|
|
|
start = time()
|
|
|
start2 = time()
|
|
|
|
|
|
last_screen = None
|
|
|
speed = 0
|
|
|
+
|
|
|
+ stop_speeding = False
|
|
|
|
|
|
if DEBUG: cv2.imshow('View', rgbScreen)
|
|
|
while True:
|
|
@@ -145,12 +151,6 @@ if __name__ == '__main__':
|
|
|
binScreen = to_bbox(binScreen)
|
|
|
labels, labeledScreen = cv2.connectedComponents(binScreen.astype('uint8'))
|
|
|
|
|
|
- if last_screen is not None:
|
|
|
- xor_screen = np.logical_xor(binScreen, last_screen)
|
|
|
- xor_labels, xor_labeledScreen = cv2.connectedComponents(binScreen.astype('uint8'))
|
|
|
- x, y = np.where(xor_labeledScreen == xor_labels-1)
|
|
|
- speed = x.max() - x.min()
|
|
|
-
|
|
|
if not enter_time and binScreen[trigger_time] != 0:
|
|
|
enter_time = time()
|
|
|
|
|
@@ -158,30 +158,47 @@ if __name__ == '__main__':
|
|
|
jump_time = (time() - enter_time) / coef
|
|
|
enter_time = None
|
|
|
|
|
|
- if binScreen[trigger_jump] != 0 or binScreen[trigger_feather]:
|
|
|
+ if binScreen[trigger_jump] != 0:
|
|
|
gui.press('space')
|
|
|
if jump_time:
|
|
|
sleep(jump_time)
|
|
|
gui.press('down')
|
|
|
jump_time = None
|
|
|
+
|
|
|
+ if not enter_time_feather and binScreen[trigger_feather_time] != 0:
|
|
|
+ enter_time_feather = time()
|
|
|
+
|
|
|
+ elif enter_time_feather and binScreen[trigger_feather_time] == 0:
|
|
|
+ take_time = time() - enter_time_feather
|
|
|
+ enter_time_feather = None
|
|
|
+
|
|
|
+ if binScreen[trigger_feather_take] != 0:
|
|
|
+ print('take')
|
|
|
+ print(take_time)
|
|
|
+ with gui.hold('down'):
|
|
|
+ sleep(take_time*4)
|
|
|
+ take_time = None
|
|
|
|
|
|
- if (time() - start)*coef > 26*4 and (time() - start) > 8:
|
|
|
+ if (time() - start)*coef > 25*3.3 and stop_speeding == False:
|
|
|
+ if (time() - start) < 10.2: stop_speeding = True
|
|
|
print(time() - start)
|
|
|
trigger_jump = (trigger_jump[0], trigger_jump[1]+pw)
|
|
|
trigger_time = (trigger_time[0], trigger_time[1]+pw)
|
|
|
- trigger_feather = (trigger_feather[0], trigger_feather[1]+pw)
|
|
|
+ trigger_feather_take = (trigger_feather_take[0], trigger_feather_take[1]+int(pw*1.4))
|
|
|
+ trigger_feather_time = (trigger_feather_time[0], trigger_feather_time[1]+int(pw*1.4))
|
|
|
start = time()
|
|
|
|
|
|
- if (time() - start2)*coef > 9*4 and (time() - start2) > 3.6:
|
|
|
+ if (time() - start2)*coef > 9*3.3 and stop_speeding == False:
|
|
|
print(time() - start2)
|
|
|
coef += 0.2
|
|
|
start2 = time()
|
|
|
|
|
|
if DEBUG:
|
|
|
rgbScreen = binary_to_RGB(binScreen)
|
|
|
- cv2.circle(rgbScreen, trigger_feather[::-1], radius=2, color=(255, 0, 0), thickness=2)
|
|
|
+ cv2.circle(rgbScreen, trigger_time[::-1], radius=2, color=(255, 0, 0), thickness=2)
|
|
|
cv2.circle(rgbScreen, trigger_jump[::-1], radius=2, color=(0, 255, 0), thickness=2)
|
|
|
- cv2.circle(rgbScreen, trigger_time[::-1], radius=2, color=(0, 0, 255), thickness=2)
|
|
|
+ cv2.circle(rgbScreen, trigger_feather_time[::-1], radius=2, color=(255, 0, 0), thickness=2)
|
|
|
+ cv2.circle(rgbScreen, trigger_feather_take[::-1], radius=2, color=(0, 255, 0), thickness=2)
|
|
|
cv2.imshow('View', rgbScreen)
|
|
|
if cv2.waitKey(1) == ord('q'): break
|
|
|
|