【辅助工具】用Python代码实现微信跳一跳,再忍不住了

in #programming7 years ago

最近迷上了微信跳一跳小游戏,正好也看到知乎上有大神分享了技术贴,我也参考了好多资料,原理就是通过abd命令截取图片,python计算两个点距离,然后转化按压时间,让电脑来完成游戏。我花了很长时间才把程序跑起来,作为一名技术小白我谈谈自己的认识,尽量让大家少走弯路。

准备工具

  • abd驱动
  • 安卓手机
  • 打开手机调试模式
  • usb线连接好手机与电脑

1.首先需要安装adb这里是下载地址点击这里;

这里是对adb的解释(https://baike.baidu.com/item/ADB/840725?fr=aladdin)

2.安装好之后将安装路径配置到环境变量中:(注意:路径后加 英文格式的;号,例如D:\adb;)

快速配置环境:新建 environmen.txt ,内容如下:


backports.functools-lru-cache==1.4
cycler==0.10.0
matplotlib==2.1.1
numpy==1.13.3
olefile==0.44
opencv-python==3.4.0.12
Pillow==4.3.0
pyparsing==2.2.0
python-dateutil==2.6.1
pytz==2017.3
six==1.11.0

python install -r environmen.txt 即可

或者直接在abd所在的文件夹shift右键打开cmd

在cmd窗口中输入abd

然后有一些库需要提前下载好:matplotlib, PIL, numpy

我之前下载的anaconda自带这些库

获取手机截图:

os.system('adb shell screencap -p /sdcard/screen.png')#手机获取实时截图 os.system('adb pull /sdcard/screen.png')#PC端获取截图 通过numpy转化成多维数组进行图片绘制: numpy.array(PIL.Image.open('screen.png')) 3.github 大神的 代码下载 再次感谢分享 下载解压即可。 4.新建python文件wechat.py,写入一下代码 # -*- coding: utf-8 -*- import os import time import numpy,PIL import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation need_update = True def get_screen_image(): os.system('adb shell screencap -p /sdcard/screen.png') os.system('adb pull /sdcard/screen.png') return numpy.array(PIL.Image.open('screen.png')) def jump(point1, point2): x1, y1 = point1; x2, y2 = point2 dis = ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5 os.system('adb shell input swipe 320 410 320 410 {}'.format(int(dis * 1.35)))#抓包获取(坐标、1.35是单位按压时间) def on_click(event, coor = []):#点击事件的坐标位置 coor.append((event.xdata, event.ydata)) if len(coor) == 2:#单击2次开始计算 jump(coor.pop(), coor.pop()) need_update = True def update_screen(frame): global need_update if need_update: time.sleep(1) axes_image.set_array(get_screen_image())#更新图片 need_ipdate = False return axes_image, figure = plt.figure()#创建空白对象 axes_image = plt.imshow(get_screen_image(), animated = True)#把获取的图片画在坐标轴 figure.canvas.mpl_connect('button_press_event', on_click)#单击回调函数(传递的是对象不是参数!!) ani = FuncAnimation(figure, update_screen, interval = 50, blit = True) #刷新图片、时间50ms plt.show() 用adb连接手机 通过usb 把手机通过usb接上pc,打开手机USB调试,传输模式选MTP。 可通过cmd打开adb.exe所在目录输入 adb devices 查看是否有设备已连接。 如果adb并没有连接上手机,于是下载了android驱动程序(驱动精灵等软件就能下载),安装了, 就好了。 通过wifi adb connect 192.168.1.100 其中192.168.1.100为手机的ip(需要在手机信息里面查找),如果连接成功, 就可以进入android的shell了。 打开微信跳一跳,点击开始游戏 用cmd打开至wechat.py所在目录,输入 python wechat.py 运行wechat.py  业余爱好,不足之处请不吝指正,欢迎留言交流! 提示:(别搞太高分,适可而止,小心被封号就尴尬了...) 大家看完不要忘了点波关注哦~~~~~
Sort:  

看起来挺有意思的!

看了不会系列,哈哈

厉害了,有机会用用,已mark

不错,有前途:D