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

先贴上大神的github地址:https://github.com/wangshub/wechat_jump_game

准备工具

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

实现原理

  • 获取手机实时截图
  • 点击起始位置与落地位置
  • 计算两个点距离
  • 计算按压时间
  • 发送按压指令
  • 重新刷新手机截图

我用的python版本是 3.6 开发环境是pycharm,首先下载abd驱动,在pc上通过命令模式操作手机。

下载好后配置环境变量,右键此电脑-高级系统设置-环境变量-Path

或者直接在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'))

贴一份完整代码

 # -*- 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()

手机连接pc一定要打开usb调试!!!!一加5t 关于手机-狂点版本号 在开发者选项中打开usb调试,什么?你说其他手机打开方式?百度吧!

最后贴几张图  ( ͡° ͜ʖ ͡°)✧

无奈分数如果太高是会上传失败的,谁有解决办法可一定要告诉我啊~

【辅助工具】Python实现微信跳一跳的更多相关文章

  1. 利用Python玩微信跳一跳

    创建python项目jump_weixin,新建python程序jump.py 需要4个辅助文件[adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll,fastboot.exe ...

  2. Python版本微信跳一跳,软件配置

    一.安装python3的环境: 直接从python官方网站下载python3的安装包,直接安装. 记得将python3放到PATH环境变量中,安装的过程中在该配置地方打钩就可以了. 如果安装的过程中出 ...

  3. Python操作微信跳一跳

    “跳一跳”这个东西还是今天刚接触到的,看到了python群中有人再问“微信跳一跳的外挂有人写了没”,“早就有了”,“github”,“等着出个更详细的教程教程没看懂,主要没有用过adb”. 不过没关系 ...

  4. 使用python编写微信跳一跳的自动脚本

    实现思路: 调用adb命令,截图 寻找小小人的底部中心点role(从下到上扫描,直到找到小小人相同像素的点,至于小小人像素点rgb是什么,可以使用photoshop查看) 寻找棋盘最高点top,然后寻 ...

  5. 微信跳一跳辅助自动跳Python

    一.说明 此代码借鉴github一位大神所写,已经做了简化合并处理,如果能成功连上手机并运行,可以实现程序自动玩游戏,刷个1000+的分数轻轻松松 github源码地址 https://github. ...

  6. 微信跳一跳Python辅助无需配置一键操作

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/8350329.html 邮箱:moyi@moyib ...

  7. 微信跳一跳,Python辅助自动跳程序

    一.说明 此代码借鉴一位大神提供在gitHub上的源码,已经做了简化合并处理,成功连上手机并运行后,可实现自动玩微信跳一跳游戏,刷个1000+的分数轻轻松松 github源码地址 https://gi ...

  8. python 微信跳一跳辅助 复现

    本来用的是苹果ios得手机,但是步骤较为复杂,没有吃透,最后妥协用了android的机器搞得. 首先找到大牛的github https://github.com/wangshub/wechat_jum ...

  9. python 微信跳一跳和源码解读

    刚好周末,想研究一下前阵子很火的微信跳一跳 下面进入正文. 本文适用对象为WIN10系统,安卓用户.目的在于让丝毫没有接触过Python的小伙伴都能成功运行,如果你恰好是这样的对象,那么跟着我开始操作 ...

随机推荐

  1. python 脚本转成exe可执行程序

    本文所使用的工具是cx_Freeze,相对py2exe和PyInstaller来说,cx_Freeze的兼容性更好,支持最新的Python 3.X,支持PyQT,并且可以跨平台支持Windows和Li ...

  2. Excel常见操作,重复数据,去除数据关联

    Eecel对一个数据进行操作后按住右下角的十字架往下拉就可以对下面的操作进行相同 的操作,所以只需先对一个数据进行操作,再拉下来就可以了 通过公式处理的数据跟其它数据有关联 需要对这些数据进行去除它们 ...

  3. 详解HTTP中GET与POST的区别,不是你看过的标准答案!

    防吐槽声明:本文适合程序员新人,自认阅文无数.技术超叼的大神不用看. GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含 ...

  4. 开启无线WLAN方式

    1.以管理员身份运行命令提示符 因为下面的步骤必须在管理员权限下运行,因此我们从开始菜单找到"命令提示符",或直接键入cmd快速搜索,右键单击它,选择"以管理员身份运行& ...

  5. hibernatetemplate find条件查询方法

    一.find(String queryString); 示例:this.getHibernateTemplate().find("from bean.User"); 返回所有Use ...

  6. POJ - 3177 Redundant Paths (边双连通缩点)

    题意:在一张图中最少可以添加几条边,使其中任意两点间都有两条不重复的路径(路径中任意一条边都不同). 分析:问题就是最少添加几条边,使其成为边双连通图.可以先将图中所有边双连通分量缩点,之后得到的就是 ...

  7. try-catch-finally的问题

    参考: https://blog.csdn.net/chengzhezhijian/article/details/17264531 面试一家公司的面试题,注: 那个面试官对这个问题挺看重的(可是我回 ...

  8. CSS3圆盘时钟

    在线演示 本地下载

  9. resin服务一直不停重启

    resin服务不断重启. 原因为resin配置文件使用域名.需要到服务上绑定一下域名.

  10. this()必须放在构造方法的第一条

    public class A { String name; int age; public A() { this("Jack",23); } public A(String nam ...