|
@@ -123,18 +123,21 @@ if __name__ == '__main__':
|
|
dino_max_x = dino_pos[1].max()
|
|
dino_max_x = dino_pos[1].max()
|
|
dino_min_y = dino_pos[0].max()
|
|
dino_min_y = dino_pos[0].max()
|
|
dino_max_y = dino_pos[0].min()
|
|
dino_max_y = dino_pos[0].min()
|
|
|
|
+ dino_min_x = dino_pos[1].min()
|
|
|
|
|
|
- coef = 1
|
|
|
|
- trigger_second = (int(dino_pos[0].mean()), int(dino_max_x + int(coef*10)*pw))
|
|
|
|
- trigger_feather = (dino_max_y, int(dino_max_x + int(coef*12)*pw))
|
|
|
|
- jumping = False
|
|
|
|
- taking = False
|
|
|
|
- laing = False
|
|
|
|
-
|
|
|
|
- print(ph, pw)
|
|
|
|
|
|
+ coef = 4
|
|
|
|
+ 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)
|
|
|
|
+
|
|
|
|
+ enter_time = None
|
|
|
|
+ jump_time = None
|
|
|
|
|
|
start = time()
|
|
start = time()
|
|
- start2= time()
|
|
|
|
|
|
+ start2 = time()
|
|
|
|
+
|
|
|
|
+ last_screen = None
|
|
|
|
+ speed = 0
|
|
|
|
|
|
if DEBUG: cv2.imshow('View', rgbScreen)
|
|
if DEBUG: cv2.imshow('View', rgbScreen)
|
|
while True:
|
|
while True:
|
|
@@ -142,41 +145,48 @@ if __name__ == '__main__':
|
|
binScreen = to_bbox(binScreen)
|
|
binScreen = to_bbox(binScreen)
|
|
labels, labeledScreen = cv2.connectedComponents(binScreen.astype('uint8'))
|
|
labels, labeledScreen = cv2.connectedComponents(binScreen.astype('uint8'))
|
|
|
|
|
|
- if not jumping and binScreen[trigger_second] != 0 or binScreen[trigger_feather] != 0:
|
|
|
|
- print('jumping')
|
|
|
|
- gui.keyDown('space')
|
|
|
|
- jumping = True
|
|
|
|
-
|
|
|
|
- elif jumping and binScreen[trigger_second[0], trigger_second[1]+(int(coef-1.2)*pw)] == 0 and binScreen[trigger_feather[0], trigger_feather[1]+(int(coef-1.2)*pw)] == 0:
|
|
|
|
- print('taking')
|
|
|
|
- gui.keyUp('space')
|
|
|
|
- gui.keyDown('down')
|
|
|
|
- jumping = False
|
|
|
|
- taking = True
|
|
|
|
|
|
+ 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()
|
|
|
|
+
|
|
|
|
+ elif enter_time and binScreen[trigger_time] == 0:
|
|
|
|
+ jump_time = (time() - enter_time) / coef
|
|
|
|
+ enter_time = None
|
|
|
|
+
|
|
|
|
+ if binScreen[trigger_jump] != 0 or binScreen[trigger_feather]:
|
|
|
|
+ gui.press('space')
|
|
|
|
+ if jump_time:
|
|
|
|
+ sleep(jump_time)
|
|
|
|
+ gui.press('down')
|
|
|
|
+ jump_time = None
|
|
|
|
|
|
- if taking and binScreen[dino_max_y-ph, dino_max_x] != 0:
|
|
|
|
- print('take off')
|
|
|
|
- gui.keyUp('down')
|
|
|
|
- taking = False
|
|
|
|
-
|
|
|
|
- if time() - start2 > 15/coef:
|
|
|
|
- print(coef)
|
|
|
|
- print('speeded')
|
|
|
|
- coef += 0.2
|
|
|
|
- start2 = time()
|
|
|
|
-
|
|
|
|
- if time() - start > 15:
|
|
|
|
|
|
+ if (time() - start)*coef > 26*4 and (time() - start) > 8:
|
|
print(time() - start)
|
|
print(time() - start)
|
|
- trigger_second = (trigger_second[0], trigger_second[1]+pw)
|
|
|
|
|
|
+ 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 = (trigger_feather[0], trigger_feather[1]+pw)
|
|
start = time()
|
|
start = time()
|
|
|
|
|
|
|
|
+ if (time() - start2)*coef > 9*4 and (time() - start2) > 3.6:
|
|
|
|
+ print(time() - start2)
|
|
|
|
+ coef += 0.2
|
|
|
|
+ start2 = time()
|
|
|
|
+
|
|
if DEBUG:
|
|
if DEBUG:
|
|
rgbScreen = binary_to_RGB(binScreen)
|
|
rgbScreen = binary_to_RGB(binScreen)
|
|
cv2.circle(rgbScreen, trigger_feather[::-1], radius=2, color=(255, 0, 0), thickness=2)
|
|
cv2.circle(rgbScreen, trigger_feather[::-1], radius=2, color=(255, 0, 0), thickness=2)
|
|
- cv2.circle(rgbScreen, trigger_second[::-1], radius=2, color=(0, 255, 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.imshow('View', rgbScreen)
|
|
cv2.imshow('View', rgbScreen)
|
|
if cv2.waitKey(1) == ord('q'): break
|
|
if cv2.waitKey(1) == ord('q'): break
|
|
|
|
+
|
|
|
|
+ # print(speed)
|
|
|
|
+ # last_screen = binScreen.copy()
|
|
|
|
|
|
|
|
|
|
|
|
|