最近迷上了微信跳一跳小游戏,正好也看到知乎上有大神分享了技术贴,我也参考了好多资料,原理就是通过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. 【我的Android进阶之旅】解决错误:No enum constant com.android.build.gradle.OptionalCompilationStep.FULL_APK

    今天在分支编译代码并允许之后,接着同步主干代码之后,再继续点击[Run]按钮允许程序的时候报错了,错误描述日志如下所示: 一.错误描述 Error:(1, 1) A problem occurred ...

  2. 收藏:几种开源许可证的区别!——By 阮一峰制作

    乌克兰程序员Paul Bagwell,画了一张分析图,下面是阮一峰制作的中文版,非常棒,绝对的好东西,收藏这张图供日后查看:

  3. K NEAREST NEIGHBOR 算法(knn)

    K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法.其中的K表示最接近自己的K个数据样本.KNN算法和K-M ...

  4. python3条件表达式和字符串

    1.布尔表达式 布尔表达式的值只有两个:真和假.在python中,真值为1,假值为0 2.逻辑操作符 三种逻辑操作:and.or.not 3.条件语句 if. if...else.if...elif. ...

  5. save a web page as a single file (mht format) using Delphi code

    Here's how to save a web page as a single file (mht format) using Delphi code: uses CDO_TLB, ADODB_T ...

  6. Delphi 正则表达式语法(5): 边界

    Delphi 正则表达式语法(5): 边界 // \b 单词边界 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg ...

  7. PAT 天梯赛 L1-005. 考试座位号 【MAP标记】

    题目链接 https://www.patest.cn/contests/gplt/L1-005 题意 有一个 考生号,一个试机座位,一个考试座位,给出试机座位,查询 考生号和考试座位 思路 MAP + ...

  8. HDU 6351 (Beautiful Now) 2018 Multi-University Training Contest 5

    题意:给定数N(1<=N<=1e9),k(1<=k<=1e9),求对N的任意两位数交换至多k次能得到的最小与最大的数,每一次交换之后不能出现前导零. 因为N最多只有10位,且给 ...

  9. HDFS 详解

    HDFS 概述 基于2.7.3 HDFS 优点: 1.高容错性 数据自动保存多个副本,默认是三个副本 副本丢失后,会自动恢复 2.适合批处理 移动计算而非移动数据,批处理的时候,数据量很大,移动数据是 ...

  10. [转]浅谈Hive vs. HBase 区别在哪里

    浅谈Hive vs. HBase 区别在哪里 导读:Apache Hive是一个构建于Hadoop(分布式系统基础架构)顶层的数据仓库,Apache HBase是运行于HDFS顶层的NoSQL(=No ...