| # -*- coding: utf-8 -*- | |
| import time | |
| import wda | |
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| import matplotlib.animation as animation | |
| from PIL import Image | |
| # 截图距离 * time_coefficient = 按键时长 | |
| # time_coefficient: | |
| # iphonex: 0.00125 | |
| # iphone6: 0.00196 | |
| # iphone6s plus: 0.00120 | |
| time_coefficient = 0.00120 | |
| c = wda.Client() | |
| s = c.session() | |
| def pull_screenshot(): | |
| c.screenshot('autojump.png') | |
| def jump(distance): | |
| press_time = distance * time_coefficient | |
| press_time = press_time | |
| print('press_time = ',press_time) | |
| s.tap_hold(200, 200, press_time) | |
| fig = plt.figure() | |
| pull_screenshot() | |
| img = np.array(Image.open('autojump.png')) | |
| im = plt.imshow(img, animated=True) | |
| update = True | |
| click_count = 0 | |
| cor = [] | |
| def update_data(): | |
| return np.array(Image.open('autojump.png')) | |
| def updatefig(*args): | |
| global update | |
| if update: | |
| time.sleep(1) | |
| pull_screenshot() | |
| im.set_array(update_data()) | |
| update = False | |
| return im, | |
| def on_click(event): | |
| global update | |
| global ix, iy | |
| global click_count | |
| global cor | |
| ix, iy = event.xdata, event.ydata | |
| coords = [(ix, iy)] | |
| print('now = ', coords) | |
| cor.append(coords) | |
| click_count += 1 | |
| if click_count > 1: | |
| click_count = 0 | |
| cor1 = cor.pop() | |
| cor2 = cor.pop() | |
| distance = (cor1[0][0] - cor2[0][0])**2 + (cor1[0][1] - cor2[0][1])**2 | |
| distance = distance ** 0.5 | |
| print('distance = ', distance) | |
| jump(distance) | |
| update = True | |
| fig.canvas.mpl_connect('button_press_event', on_click) | |
| ani = animation.FuncAnimation(fig, updatefig, interval=50, blit=True) | |
| plt.show() |