这篇文章主要为大家详细介绍了微信跳一跳 python 自动代码解读 1.0, 具有一定的参考价值, 感兴趣的小伙伴们可以参考一下
那个跳一跳 python 外挂, 有几个 python 文件, 其中有一个是得到截图, 然后鼠标在图片上点击两次, python 窗口上会打印两次鼠标的位置, 并且会跟上一行这两个点之间的距离
这个功能我先给除去获取截屏, 就说怎么在某张图片上算出两次点击的距离
首先, 需要用到图形模块, PIL:
- from PIL import Image
- img = Image.open('0.jpg')
然后用图形绘制模块 matplotlib 来给出一个 plot 对象:
- import matplotlib.pyplot as plt
- fig = plt.figure()
plt.imshow(img, animated = True)
然后用 matplotlib 的 canvas.mpl_connect 函数, 将我们点击的动作和图片连接起来, 这个函数的第二个参数要我们自己的写
fig.canvas.mpl_connect('button_press_event', on_press)
在这个自定义的 on_press 函数, 我们要实现得到两个点以后再算出距离
那么我们就要有变量来储存两个点, 临时储存点, 来计算点击了多少次, 横纵坐标
分别用全局变量 cor=[0,0],coords=[], click_count=0,ix,iy
- global ix,iy
- global click_count
- global cor
- ix,iy = event.xdata, event.ydata
- coords = []
- coords.append((ix,iy))
- print("now =", coords)
- cor.append(coords)
- click_count += 1
先把点储存在临时的 coords 里面, 打印出当前位置, 然后将临时的放入全局变量 cor 里面, 并且点击次数 + 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)
当点击次数大于 1 的时候, 就说明已经储存了两个点了
这里用的栈 pop() 方法得到两个点, 分别放入 cor1 和 cor2, 那么 cor1 和 cor2 就是两个点了
接着计算出距离 distance 就行了
完整代码:
- import numpy as np
- from matplotlib.animation import FuncAnimation
- import matplotlib.pyplot as plt
- from PIL import Image
- def on_press(event):
- global ix,iy
- global click_count
- global cor
- ix,iy = event.xdata, event.ydata
- coords = []
- coords.append((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)
- cor = [0,0]
- click_count = 0
- fig = plt.figure()
- img = Image.open('0.jpg')
- #updata = True
- plt.imshow(img, animated= True)
- fig.canvas.mpl_connect('button_press_event', on_press)
- plt.show()
最终效果:
来源: http://www.phperz.com/article/18/0226/362727.html