【微信跳一跳】半自动脚本,坐躺跳一跳高分秘籍,想跳多久跳多久

Robin 6060次浏览

摘要:最近微信小程序的跳一跳在朋友圈比较火,都在拼命的跳高分,我也跳了几次,怎么感觉那么难呢,这让我很难受,好吧我就试试强大的Python可不可以给我降低它的难度

环境:Windows  Python3.6

涉及的模块:os、PIL、numpy、matplotlib、time(可选)

工具:Android手机一部

写之前一定要搞清楚要干什么,怎么干,把原理搞清楚,这样才能写出代码。

一、获取到每次需要跳的图片

二、首先我们要获取到每次需要跳的2个点的坐标

三、通过点的坐标可以计算出我们需要跳跃的距离

四、通过计算出的距离来计算需要按压的时间

五、模拟按压实现自动跳跃

原理知道了那么接下来就是利用强大的Python来实现了,实现过程如下:

一、如何获取手机的屏幕,可以利用adb命令实现

def get_screen_image():
    os.system('adb shell screencap -p /sdcard/screen.png')
    os.system('adb pull /sdcard/screen.png')
    return numpy.array(Image.open('screen.png'))

此方法给我们返回了当前屏幕的截图,并且通过numpy.array将图片转换成矩阵,如图

image.png


二、接下来我们该获取起点和终点的坐标,在这通过鼠标点击的动作来获取

def click(event, coor=[]):
    global is_up
    coor.append((event.xdata, event.ydata))
    if len(coor) == 2:
        jump(coor.pop(), coor.pop())
        is_up = True

此方法我们获取到了2个坐标点(上图红色方框标出的位置),并且当坐标点达到2个的时候我们就开始执行跳跃的动作


三、跳跃距离计算、按压时间的计算、跳跃动作的实现:

def jump(point1, point2):
    x1, y1 = point1
    x2, y2 = point2
    distance = ((x2-x1)**2 + (y2-y1)**2)**0.5
    os.system('adb shell input swipe 320 410 320 410 {}'.format(int(distance*1.35)))

其中distance是通过勾股定理来计算出来的跳跃距离,按压时间是通过多次抓包和多次试验得到的一个固定值,同过adb命令来模拟按压实现跳跃。


每次跳跃完之后需要更新asex_image容器中的图片,此更新非每次都更新,所以我们定义个变量is_up默认为False,当is_up为True的时候执行更新:

def up_screen(frame):
    global is_up
    if is_up:
        time.sleep(1)
        axes_image.set_array(get_screen_image())
        is_up = False
    return axes_image


想要获取源码的可以在文章下面留下邮箱,或者GitHub获取。


原创文章转载请注明出处。

相关文章