jezv преди 11 месеца
родител
ревизия
47c13a5e64
променени са 1 файла, в които са добавени 33 реда и са изтрити 16 реда
  1. 33 16
      trex/main.py

+ 33 - 16
trex/main.py

@@ -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