【辅助工具】Python实现微信跳一跳
最近迷上了微信跳一跳小游戏,正好也看到知乎上有大神分享了技术贴,我也参考了好多资料,原理就是通过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实现微信跳一跳的更多相关文章
- 利用Python玩微信跳一跳
创建python项目jump_weixin,新建python程序jump.py 需要4个辅助文件[adb.exe,AdbWinApi.dll,AdbWinUsbApi.dll,fastboot.exe ...
- Python版本微信跳一跳,软件配置
一.安装python3的环境: 直接从python官方网站下载python3的安装包,直接安装. 记得将python3放到PATH环境变量中,安装的过程中在该配置地方打钩就可以了. 如果安装的过程中出 ...
- Python操作微信跳一跳
“跳一跳”这个东西还是今天刚接触到的,看到了python群中有人再问“微信跳一跳的外挂有人写了没”,“早就有了”,“github”,“等着出个更详细的教程教程没看懂,主要没有用过adb”. 不过没关系 ...
- 使用python编写微信跳一跳的自动脚本
实现思路: 调用adb命令,截图 寻找小小人的底部中心点role(从下到上扫描,直到找到小小人相同像素的点,至于小小人像素点rgb是什么,可以使用photoshop查看) 寻找棋盘最高点top,然后寻 ...
- 微信跳一跳辅助自动跳Python
一.说明 此代码借鉴github一位大神所写,已经做了简化合并处理,如果能成功连上手机并运行,可以实现程序自动玩游戏,刷个1000+的分数轻轻松松 github源码地址 https://github. ...
- 微信跳一跳Python辅助无需配置一键操作
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/8350329.html 邮箱:moyi@moyib ...
- 微信跳一跳,Python辅助自动跳程序
一.说明 此代码借鉴一位大神提供在gitHub上的源码,已经做了简化合并处理,成功连上手机并运行后,可实现自动玩微信跳一跳游戏,刷个1000+的分数轻轻松松 github源码地址 https://gi ...
- python 微信跳一跳辅助 复现
本来用的是苹果ios得手机,但是步骤较为复杂,没有吃透,最后妥协用了android的机器搞得. 首先找到大牛的github https://github.com/wangshub/wechat_jum ...
- python 微信跳一跳和源码解读
刚好周末,想研究一下前阵子很火的微信跳一跳 下面进入正文. 本文适用对象为WIN10系统,安卓用户.目的在于让丝毫没有接触过Python的小伙伴都能成功运行,如果你恰好是这样的对象,那么跟着我开始操作 ...
随机推荐
- 用Kotlin开发Android的Hello Kotlin!!
1 创建新项目 android studio 新建一个项目 只有一个空MainActivity 2 安装kotlin file-seeting-plugins-install jetbrains pl ...
- 在windows上搭建redis集群
一 所需软件 Redis.Ruby语言运行环境.Redis的Ruby驱动redis-xxxx.gem.创建Redis集群的工具redis-trib.rb 二 安装配置redis redis下载地址 ...
- Myeclipse中文乱码解决方式
我们刚刚安装的Myeclipse有可能使用的是GBK的编码方式,而通常我们的程序都是使用的是UTF-8的编码方式,所以当我们导入一个项目的时候,会产生乱码,解决方式如下: 一.将整个project设置 ...
- df: `/root/.gvfs': Permission denied
在使用oracle账户检查本地磁盘情况时,总是出现df: `/root/.gvfs': Permission denied信息提示. [oracle@rac1 ~]$ df -h Filesystem ...
- python16_day03【集合、编码、函数、递归、内置函数】
一.集合 集合是一个无序的,不重复的数据组合,它的主要作用如下: 去重,把一个列表变成集合,就自动去重了 关系测试,测试两组数据之前的交集.差集.并集等关系 #创建: s = {3,5,9,10} # ...
- freemarker split字符串分割 遍历map
<#list "张三三,李思思,,王强,柳树,诸葛正我"?split(",") as name> "${name}" </ ...
- java byte为何范围是-128~127
从我们接触Java的时候,就被告知基础类型byte是一个字节,占8位,表示的范围是-128~127.那么为什么会这个范围呢? 咱们先回顾一下计算机基础: 1. 在计算机内部数据的存储和运算都采用二 ...
- hadoop11----socket
package cn.itcast.bigdata.socket; import java.io.BufferedReader; import java.io.InputStream; import ...
- 网络管理常用命令(6/14) -netstat命令详解
Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Membershi ...
- JavaScript消息机制入门篇
JavaScript这个语言本身就是建立在一种消息机制上的,所以它很容易处理异步回调和各种事件.这个概念与普通的编程语言基础是不同的,所以让很多刚接触JavaScript的人摸不着头脑.JavaScr ...