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

原理(摘自项目说明页面):
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
2pip安装   
     cmd窗口中 进入python3根目录下的script文件夹,
     执行命令  
       

则Scripts文件夹下会出现一系列和pip有关的文件,其中有pip.exe
    
将pip.exe的路径也添加到环境变量PATH中
    在cmd下输入“pip”,如果能识别"pip"指令,则说明pip安装成功了

3adb驱动安装
    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 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

第一行 发送截图
   2       第一次鼠标点击  生成坐标
   3       第二次鼠标点击  生成坐标
   4        计算距离
   5         发送点击屏幕命令  swipe后面四个参数是    (滑动起点 x   y     滑动终点   x   y      滑动用时
 
第一次点击

第二次点击

python 实现 跳一跳游戏 代码解析的更多相关文章

  1. python 微信跳一跳辅助 复现

    本来用的是苹果ios得手机,但是步骤较为复杂,没有吃透,最后妥协用了android的机器搞得. 首先找到大牛的github https://github.com/wangshub/wechat_jum ...

  2. 使用python玩跳一跳亲测使用步骤详解

    玩微信跳一跳,测测python跳一跳,顺便蹭一蹭热度: 参考博文 使用python玩跳一跳超详细使用教程 WIN10系统,安卓用户请直入此: python辅助作者github账号为:wangshub. ...

  3. python_3 :用python微信跳一跳

    [学习使用他人代码] 2018年01月21日 19:29:02 独行侠的守望 阅读数:319更多 个人分类: Python 编辑 版权声明:本文为博主原创文章,转载请注明文章链接. https://b ...

  4. python 微信跳一跳和源码解读

    刚好周末,想研究一下前阵子很火的微信跳一跳 下面进入正文. 本文适用对象为WIN10系统,安卓用户.目的在于让丝毫没有接触过Python的小伙伴都能成功运行,如果你恰好是这样的对象,那么跟着我开始操作 ...

  5. python 微信跳一跳进阶

    上一篇是通过图片识别来计算跳的距离,再计算按压时间,最后通过adb来控制手机跳的 本篇讲的是通过机器学习,来训练的算法进行跳一跳的 链接: github:https://github.com/Prin ...

  6. 2048小游戏代码解析 C语言版

    2048小游戏,也算是风靡一时的益智游戏.其背后实现的逻辑比较简单,代码量不算多,而且趣味性强,适合作为有语言基础的童鞋来加强编程训练.本篇分析2048小游戏的C语言实现代码. 前言 游戏截图:  游 ...

  7. Python turtle绘制阴阳太极图代码解析

    本文详细分析如何使用Python turtle绘制阴阳太极图,先来分解这个图形,图片中有四种颜色,每条曲线上的箭头表示乌龟移动的方向,首先从中心画一个半圆(红线),以红线所示圆的直径作半径画一个校园, ...

  8. 如何使用NSDL玩转微信跳一跳

    目前网上介绍windows和IOS操作系统上玩微信跳一跳的有很多文章,但介绍Linux平台下的文章相对较少,所以动手操作下和大家分享,同时感谢wangshub在github上的分享: 1 下载wech ...

  9. 微信小游戏跳一跳简单手动外挂(基于adb 和 python)

    只有两个python文件,代码很简单. shell.py: #coding:utf-8 import subprocess import math import os def execute_comm ...

随机推荐

  1. 中国传统色JSON数据

    提取自中国色/colors.json 解析后存入数据库,导出插入语句chinese_colors.sql,提取码:5inu [ { "CMYK": [ 4, 5, 18, 0 ], ...

  2. 【C_Language】---C文件学习

    ---恢复内容开始--- 又看了一遍文件的知识点了,断断续续已经看了2-3遍,也就这次花了点时间做了一下总结,以后我想都不会再去翻书了,哈哈. 1. 基于缓冲区的文件操作2. 打开关闭文件3. 单个字 ...

  3. poj 2253 最短路 or 最小生成树

    Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sit ...

  4. python 继承机制

    继承机制经常用于创建和现有类功能类似的新类,又或是新类只需要在现有类基础上添加一些成员(属性和方法),但又不想将现有类代码复制给新类.也就是说,通过继承这种机制,可以实现类的重复使用. class S ...

  5. java8新特性Lambda和Stream

    Java8出来已经4年,但还是有很多人用上了jdk8,但并没用到里面的新东西,那不就等于没用?jdk8有许多的新特性,详细可看下面脑图 我只讲两个最重要的特性Lambda和Stram,配合起来用可以极 ...

  6. 用ES7解决异步回调地狱问题

    用了 Promise 其实并没有真正解决回调地狱问题,并且还新增了很多 .then(data => { .... }) 这些很没有意义的 “模板代码”.所以先人们又搞出了generator 和 ...

  7. ArrayList与LinkedList比较

    ArrayList与LinkedList比较 1.实现方式 ArrayList内部结构为数组,定义如下: /** * The array buffer into which the elements ...

  8. SonarQube代码管理

    一 搭建过程不详细说 二 配合jenkins使用,jenkins搭建过程这里不详细说 三 jenkins项目配置,需要安装sonarqube-jenkins插件 sonar.projectKey=a6 ...

  9. BaseAdapter的三种表达式分析,startActivityForResult的使用

    (一)BaseAdapter的三种表达式: ①逗比式: public View getView(int position, View convertView, ViewGroup parent) { ...

  10. Java基础知识之设计模式--单例模式

    Java设计模式--单例模式 声明:本文根据慕课网汤小洋老师的精品课程整理来的:慕课网 什么是设计模式(Design Pattern)? 设计模式是一套被反复使用,多数人知晓的,经过分类编目的,代码设 ...