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网络编程学习笔记(10):webpy框架
Jun 09 Python
python中PIL安装简单教程
Apr 21 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
Python中的Django基本命令实例详解
Jul 15 Python
修改python plot折线图的坐标轴刻度方法
Dec 13 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 Python
python 去除二维数组/二维列表中的重复行方法
Jan 23 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
Django实现文件上传下载
Oct 06 Python
Django 用户登陆访问限制实例 @login_required
May 13 Python
python re.match()用法相关示例
Jan 27 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图片处理之使用imagecopy函数添加图片水印实例
2014/11/19 PHP
PHP使用token防止表单重复提交的方法
2016/04/07 PHP
Nginx实现反向代理
2017/09/20 Servers
jQuery live
2009/05/15 Javascript
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
引用其它js时如何同时处理多个window.onload事件
2014/09/02 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
2016/01/27 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
使用javaScript实现鼠标拖拽事件
2020/04/03 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
JS实现简单tab选项卡切换
2019/10/25 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
伦敦高达60%折扣的钻石珠宝商:Purely Diamonds
2018/06/24 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
波兰运动鞋网上商店:Distance.pl
2020/07/30 全球购物
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
廉洁自律承诺书
2014/03/27 职场文书
合作协议书
2014/04/23 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
商务经理岗位职责
2014/08/03 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
办公室文员工作自我鉴定
2014/09/19 职场文书
作弊检讨书范文
2015/05/06 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android