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 的 Socket 编程
Mar 24 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
利用Hyperic调用Python实现进程守护
Jan 02 Python
python链接oracle数据库以及数据库的增删改查实例
Jan 30 Python
pandas DataFrame数据转为list的方法
Apr 11 Python
Python中文件的读取和写入操作
Apr 27 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
如何定义TensorFlow输入节点
Jan 23 Python
MATLAB数学建模之画图汇总
Jul 16 Python
python正则表达式re.match()匹配多个字符方法的实现
Jan 27 Python
Pytorch 统计模型参数量的操作 param.numel()
May 13 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
PHP读MYSQL中文乱码的解决方法
2006/12/17 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
2012/08/14 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
2013/08/07 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
详解如何在vue中使用sass
2017/06/21 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
webpack css加载和图片加载的方法示例
2018/09/11 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
[49:42]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第一局
2016/03/04 DOTA
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
简单介绍Python中的几种数据类型
2016/01/02 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
python输出决策树图形的例子
2019/08/09 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
去除python中的字符串空格的简单方法
2020/12/22 Python
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
工地资料员岗位职责
2013/12/31 职场文书
报到证丢失证明
2014/01/11 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
责任胜于能力演讲稿
2014/05/20 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
教师岗位说明书
2015/09/30 职场文书
在Python中如何使用yield
2021/06/07 Python
纯html+css实现Element loading效果
2021/08/02 HTML / CSS