python微信跳一跳游戏辅助代码解析


Posted in Python onJanuary 29, 2018

这个代码实现的是   手动点击起点 和 终点  ,程序自动判断距离、触屏时间  完成跳跃 

原理(摘自项目说明页面):

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文件夹,

执行命令  

python微信跳一跳游戏辅助代码解析

则Scripts文件夹下会出现一系列和pip有关的文件,其中有pip.exe

将pip.exe的路径也添加到环境变量PATH中

在cmd下输入“pip”,如果能识别"pip"指令,则说明pip安装成功了

3. adb驱动安装

adb驱动下载地址:https://adb.clockworkmod.com/

下载完后  将adb 命令 添加到系统环境变量里面

打开CMD控制台,输入adb,出现如下界面,即为配置成功。如图:

python微信跳一跳游戏辅助代码解析

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 np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from PIL import Image
import math
import time
import os
def 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 = 0
cor = [0, 0]
pull_screenshot() 执行截屏函数
img = np.array(Image.open('autojump.png')) Image.open读取图片 到名为 img 的图片数组
update = True 
click_count = 0
cor = []
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 = True
fig.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

 python微信跳一跳游戏辅助代码解析

第一行 发送截图

2       第一次鼠标点击  生成坐标

3       第二次鼠标点击  生成坐标

4        计算距离

5         发送点击屏幕命令  swipe后面四个参数是    (滑动起点 x   y     滑动终点   x   y      滑动用时)

第一次点击

python微信跳一跳游戏辅助代码解析

第二次点击

python微信跳一跳游戏辅助代码解析

Python 相关文章推荐
python画一个玫瑰和一个爱心
Aug 18 Python
Python unittest单元测试框架总结
Sep 08 Python
Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解
Apr 26 Python
jupyter notebook 中输出pyecharts图实例
Apr 23 Python
Python 如何提高元组的可读性
Aug 26 Python
python实现的分析并统计nginx日志数据功能示例
Dec 21 Python
python 消除 futureWarning问题的解决
Dec 25 Python
Python基于Dlib的人脸识别系统的实现
Feb 26 Python
利用Python自动化操作AutoCAD的实现
Apr 01 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
Jul 15 Python
从python读取sql的实例方法
Jul 21 Python
解决Python 写文件报错TypeError的问题
Oct 23 Python
Python面向对象之继承代码详解
Jan 29 #Python
Python多线程threading和multiprocessing模块实例解析
Jan 29 #Python
Python编程scoketServer实现多线程同步实例代码
Jan 29 #Python
Python模块搜索路径代码详解
Jan 29 #Python
python机器人行走步数问题的解决
Jan 29 #Python
python的socket编程入门
Jan 29 #Python
Python 错误和异常代码详解
Jan 29 #Python
You might like
自己前几天写的无限分类类
2007/02/14 PHP
php smarty 二级分类代码和模版循环例子
2011/06/01 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
2011/11/17 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
js和jquery对dom节点的操作(创建/追加)
2013/04/21 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
JQuery实现展开关闭层的方法
2015/02/17 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
Websocket协议详解及简单实例代码
2016/12/12 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
python使用Matplotlib绘制分段函数
2018/09/25 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
html5简介_动力节点Java学院整理
2017/07/07 HTML / CSS
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
公安局副政委班子个人对照检查材料
2014/10/04 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
入党政审材料范文
2014/12/24 职场文书
保送生自荐信范文
2015/03/26 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书