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

执行命令  

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 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

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

第一行 发送截图

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

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

4        计算距离

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

第一次点击

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

第二次点击

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

来源:https://www.cnblogs.com/centos2017/p/8178215.html

标签:python,微信跳一跳,游戏辅助,代码解析
0
投稿

猜你喜欢

  • JS删除数组里的某个元素方法

    2023-07-14 22:45:47
  • 浅谈Python协程asyncio

    2021-01-12 21:30:32
  • Python 如何在字符串中插入变量

    2023-02-16 11:06:27
  • 基于python实现的抓取腾讯视频所有电影的爬虫

    2023-02-20 22:01:39
  • Pytorch之卷积层的使用详解

    2022-09-04 16:43:21
  • python 实现图片裁剪小工具

    2022-04-27 18:15:15
  • python3实现弹弹球小游戏

    2021-04-21 07:12:56
  • CSS中的标点符号用法

    2008-10-03 11:58:00
  • Python实现base64编码

    2023-10-01 02:34:50
  • 如何编写一个基于WEB的文件查询系统?

    2009-11-08 18:55:00
  • 一个简单的北京2008奥运倒计时代码

    2008-03-16 14:15:00
  • 如何使用pyinstaller打包多个和单个python文件详解

    2023-03-30 10:48:26
  • 代码总结Python2 和 Python3 字符串的区别

    2023-05-25 00:58:52
  • 解决项目pycharm能运行,在终端却无法运行的问题

    2021-11-03 21:05:07
  • Python解决爬虫程序卡死问题

    2021-04-02 15:34:32
  • 低版本中Python除法运算小技巧

    2021-11-14 00:54:00
  • Tab(选项卡)的产品设计原则及应用[译]

    2009-07-09 19:05:00
  • Python实现的用户登录系统功能示例

    2021-07-02 03:38:18
  • Linux RedHat下安装Python2.7开发环境

    2021-01-10 17:33:29
  • Python去除PDF水印的实现示例

    2022-08-13 19:26:45
  • asp之家 网络编程 m.aspxhome.com