为了静心好好学习,才这样做的?
2017年12月28日微信发布了跳一跳,让广大微信用户陷入其中无可自拔,我也不意外。但正值期末考试,天天玩游戏不是耽误时间嘛?
不玩个高分心里就又很不爽。于是在github上找到了大神用python写的挂(写的是真不错)实验工具 密码:29ty
实验环境:
1.windows或mac等pc端操作系统
2.pc端装有python2.7或python3以上的环境
3.pc端安装有adb工具。adb介绍
4.安卓或ios系统的手机终端
实验原理介绍:
通过adb来控制安卓手机的shell调试,然后在用python脚本来操作adb。首先adb对手机中的界面进行截图,python脚本接收到adb截图传来的
图片根据图片中的像素来分析两个跳块之间的距离,这个方法主要是基于python中的图像处理模块。确定两点之间的距离后,再用python脚本
来计算所要触屏的时间(即小人要跳的距离),然后由python脚本传到adb中,adb再来控制手机中的操作。每跳一次都会执行上述操作。该脚本中
还设置了防微信团队来ban,设置了休眠时间30到100s不等。
脚本编写思路:
核心:每次落稳之后截图,根据截图算出棋子的坐标和下一个块顶面的中点坐标,
根据两个点的距离乘以一个时间系数获得长按的时间
识别棋子:靠棋子的颜色来识别位置,通过截图发现最下面一行大概是一条直线,就从上往下一行一行遍历,
比较颜色(颜色用了一个区间来比较)找到最下面的那一行的所有点,然后求个中点,
求好之后再让 Y 轴坐标减小棋子底盘的一半高度从而得到中心点的坐标
识别棋盘:靠底色和方块的色差来做,从分数之下的位置开始,一行一行扫描,由于圆形的块最顶上是一条线,
方形的上面大概是一个点,所以就用类似识别棋子的做法多识别了几个点求中点,
这时候得到了块中点的 X 轴坐标,这时候假设现在棋子在当前块的中心,
根据一个通过截图获取的固定的角度来推出中点的 Y 坐标
最后:根据两点的坐标算距离乘以系数来获取长按时间(似乎可以直接用 X 轴距离)
实验步骤
1.安装python2.7或3,这个就不说了很简单自行百度吧
2.安装python中的模块matplotlib
安装过程可以参考链接 ,该模块用来做图像处理用的。
3.安装python模块Image
安装教程百度吧有比较简单
4.配置adb的环境变量配置教程
5.将手机与电脑用数据线相连,打开usb调试。
6.在pc终端界面下测试adb与实际是否连接成功。在pc终端输入adb devices。出现如图所示即为成功。
7.进入python脚本目录cd 脚本所在路径
8.在手机端打开微信中的跳一跳小程序并点击开始游戏
9.在终端运行python脚本使用命令 python wechat_jump_auto.py
10.运行脚本后手机上会自行操作。
下图是我的操作结果
11.提一句不要弄太高分,微信现在会将异常高分清零。