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