| 
					
				 | 
			
			
				@@ -123,18 +123,21 @@ if __name__ == '__main__': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         dino_max_x = dino_pos[1].max() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         dino_min_y = dino_pos[0].max() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         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() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        start2= time() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        start2 = time() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        last_screen = None 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        speed = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if DEBUG: cv2.imshow('View', rgbScreen)  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         while True: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -142,41 +145,48 @@ if __name__ == '__main__': 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             binScreen = to_bbox(binScreen) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             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) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                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) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 start = time() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (time() - start2)*coef > 9*4 and (time() - start2) > 3.6: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                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_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) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if cv2.waitKey(1) == ord('q'): break 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # print(speed) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            # last_screen = binScreen.copy() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 |