python微信跳一跳游戏辅助代码解析
作者:乌托邦眺望 发布时间:2021-06-10 21:42:29
这个代码实现的是 手动点击起点 和 终点 ,程序自动判断距离、触屏时间 完成跳跃
原理(摘自项目说明页面):
1. 将手机点击到“跳一跳”小程序界面;
2. 用Adb 工具获取当前手机截图,并用adb将截图pull上来:
adb shell screencap -p /sdcard/1.png
adb pull /sdcard/1.png .
3. 用matplot显示截图;
4. 用鼠标点击起始点和目标位置,计算像素距离;
5. 根据像素距离,计算按压时间;
6. 用Adb工具点击屏幕蓄力一跳:
adb shell input swipe x y x y time
环境准备(window7):
1. 下载 、安装 python3
2. pip安装
cmd窗口中 进入python3根目录下的script文件夹,
执行命令
则Scripts文件夹下会出现一系列和pip有关的文件,其中有pip.exe
将pip.exe的路径也添加到环境变量PATH中
在cmd下输入“pip”,如果能识别"pip"指令,则说明pip安装成功了
3. adb驱动安装
adb驱动下载地址:https://adb.clockworkmod.com/
下载完后 将adb 命令 添加到系统环境变量里面
打开CMD控制台,输入adb,出现如下界面,即为配置成功。如图:
4.下载源码
到这一步,我们要将源码下载到本地电脑里。
github地址:https://github.com/wangshub/wechat_jump_game
5.安装依赖包
跳一跳微信辅助的最终运行需要很多的Python模块,作者已经将这些所需要的模块都写在了源码中的requirements.txt中,
所以我们执行命令 pip install -r requirements.txt,即可将这些必须的模块下载下来,模块包括有matplotlib,numpy等。
如图,我们使用CD命令,切换到源码的下载目录,
再执行命令pip install -r requirements.txt
6.设置手机权限
将安卓手机用USB与电脑相连接,在安卓手机上打开开发者模式,并开启USB调试模式,每种安卓手机开启的方法都不一样,以小米 Mix2 手机为例,在设置中找到手机版本号,连续点击5次即可开启开发者模式然后进入开发者选项打开 usb调试、usb调试(安全设置)、
如果以上操作没有任何错误,那么在CMD控制台,执行命令 adb devices可显示当前手机连接的端口号。
7.运行
在以上步骤都没有任何错误的情况下,打开微信,开启跳一跳小游戏,进入游戏主页面,然后再打开CMD控制台,使用CD命令切换目录,切换到跳一跳辅助的源码目录下,执行命令wechat_jump_auto.py。
参数调节请打开源码目录下的config文件夹,里面有适配各种屏幕和机型的文件夹,根据自己的分辨率或机型,点击进入相应文件夹,打开里面的config.json文件,修改参数即可。建议修改前最好备份一份。
import numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animationfrom PIL import Imageimport mathimport timeimport osdef pull_screenshot(): 定义 截取手机屏幕 并 发送截图到电脑 函数 os.system('adb shell screencap -p /sdcard/autojump.png') 发送 截屏命令 到手机 os.system('adb pull /sdcard/autojump.png .') 发送 拉取图片到电脑 命令def jump(distance): 定义 跳跃函数 形参为距离 press_time = distance * 1.35 计算按屏幕 时间 press_time = int(press_time) cmd = 'adb shell input swipe 320 410 320 410 ' + str(press_time) 按屏幕命令 print(cmd) os.system(cmd) 发送 按屏幕命令fig = plt.figure() 创建一个图像对象(窗口) index = 0cor = [0, 0]pull_screenshot() 执行截屏函数img = np.array(Image.open('autojump.png')) Image.open读取图片 到名为 img 的图片数组update = True click_count = 0cor = []def update_data(): 定义更新数据的函数 更新图片 return np.array(Image.open('autojump.png'))im = plt.imshow(img, animated=True) im = 绘制图像(数组名、动画=打开)def updatefig(*args): 定义动画函数 global update if update: time.sleep(1.5) pull_screenshot() im.set_array(update_data()) update = False return im,def onClick(event): 定义 鼠标点击 处理函数 global update global ix, iy global click_count global cor # next screenshot ix, iy = event.xdata, event.ydata coords = [] coords.append((ix, iy)) [(x1,y1)|(x2,y2)] print('now = ', coords) cor.append(coords) [[(x1,y1)],[(x2,y2)]] click_count += 1 if click_count > 1: click_count = 0 cor1 = cor.pop() [(x2,y2)] cor2 = cor.pop() [(x1,y1)] distance = (cor1[0][0] - cor2[0][0])**2 + (cor1[0][1] - cor2[0][1])**2
x2 - x1 y2 - y1 distance = distance ** 0.5 print('distance = ', distance) jump(distance) update = Truefig.canvas.mpl_connect('button_press_event', onClick) 鼠标点击 处理函数 onClick ani = animation.FuncAnimation(fig, updatefig, interval=50, blit=True)
图像函数 动画函数 更新频率50ms 更新所有点plt.show() 显示图像
运行结果:
python wechat_jump_py3.py
第一行 发送截图
2 第一次鼠标点击 生成坐标
3 第二次鼠标点击 生成坐标
4 计算距离
5 发送点击屏幕命令 swipe后面四个参数是 (滑动起点 x y 滑动终点 x y 滑动用时)
第一次点击
第二次点击
来源:https://www.cnblogs.com/centos2017/p/8178215.html
猜你喜欢
- Labelme简要介绍通过labelme对图进行标注后,得到的是json文件,而Yolov5对数据进行模型构建的时候,读取需要的是txt格式
- 客户端从服务端下载文件的流程分析: 浏览器发送一个请求,请求访问服务器中的某个网页(如:down.php),该网页的代码如下。 服务器接受到
- 富文本-图片上传html:<div class="layui-form-item layui-form-text"
- 本文实例讲述了Vue指令v-for遍历输出JavaScript数组及json对象的常见方式。分享给大家供大家参考,具体如下:定义数据:<
- 本文实例讲述了Python使用urllib2模块实现断点续传下载的方法。分享给大家供大家参考。具体分析如下:在使用HTTP协议进行下载的时候
- 下面通过三种方法给大家介绍Pycharm2020.1安装中文语言插件的方法,大家可以参考下:方法一(在搜索不到插件):1.安装好Pychar
- 方法一一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1、设置数
- 系统用户administrator 密码改变后,注销重新登录,发现SQL Server没有随机启动。手动从服务管理器中启动,提示“由于登录失
- 在python程序中添加tensoboard一系列代码我就不一一写了。查找资料就可以找到很多这方面的内容。今天我主要是想说下,如何在cmd中
- 在ASP的实际操作中,总会发生这样的情况,如在银行,从我的帐户往费文华的帐户划款,我的帐户显示已经划出,但因银行的系统出现故障,导致费文华帐
- 疑问在调用socket的时候,我们会使用到listen()函数,里面有个参数叫backlog, 例如:socket.listen(5). 那
- 具体代码如下所述:< !DOCTYPE html > <html lang = "en" > &
- 创意404页面的文章我们似乎已经出过两篇了,今天hongkiat又带来了60个创意404页面.相关404页面设计文章:国外404错误页面的创
- 1 打开cmd,不改变运行的目录:输入python 空格 调试好的python文件路径或者python 空格 将py
- 表单验证做网站程序多多少少都会碰到,其中emai地址的合法性验证也算是一个典型的例子,网页表单的验证我们一般是先在客户端使用javascri
- 安装cuda更新nvidia驱动打开GeForce Game Ready Driver或在GeForce Experience中下载符合自己
- 效果图实现代码vue2 代码如下<!-- 横向柱状图测试结果 --><template> <div
- 首先创建公用js在static中创建js—>utils.jsutils.js内容如下:export default { install
- 题目描述724. 寻找数组的中心下标 - 力扣(LeetCode) (leetcode-cn.com)给你一个整数数组 nums
- 本文实例为大家分享了Python实现简单扫雷游戏的具体代码,供大家参考,具体内容如下#coding: utf-8__note__ = &qu