用 Python 从零开始玩微信跳一跳

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: 现在,参照外挂项目的源码,我们就从零开始来自己动手写一个手动版本的跳一跳外挂。 思路: 1、利用 adb 命令先把跳一跳截图保留至本地 2、通过点击图上两个坐标点,算出两点之间的距离(勾股定理),最后得出按压屏幕3的时间。

现在,参照外挂项目的源码,我们就从零开始来自己动手写一个手动版本的跳一跳外挂。

思路:

1、利用 adb 命令先把跳一跳截图保留至本地

2、通过点击图上两个坐标点,算出两点之间的距离(勾股定理),最后得出按压屏幕3的时间。

3、通过 adb 命令执行按压屏幕操作

4、重复 1 - 3

思路已经有了,就可以动手开码了。不过要先安装好 adb 环境,至于怎么配置安装,Google it!无非就是下载安装 adb 驱动,并设置好环境变量而已!

先把后面需要的库引进来

import
 os

import
 math

# 这两个库用于图片的操作

import
 matplotlib.pyplot 
as
 plt

from
 PIL 
import
 
Image

新建 WechatJump 类,并进行初始化操作


class
 WechatJump:

   def__init__(self):

       # 按压系数,不同分辨率的手机需要做调整

        self._coefficient = 1.35

        # 记录按压次数

        self._click_count = 0

        # 记录点击点坐标的数组

        self._coords = []

首先需要保存图片至本地

def
 generate_screenshot(self):

   # 截图,并将图片保存为 /sdcard/screenshot.png

    os.system('adb shell screencap -p /sdcard/screenshot.png')

    # pull 命令是将图片从手机发送到电脑本地

    os.system('adb pull /sdcard/screenshot.png .')

点击图片坐标点


# event 是点击事件

def on_click(self, event):
    
# event.xdata, event.ydata 分别是点击的横纵坐标,将坐标依次保存到 _coords 数组中
    
self._coords.append((event.xdata, event.ydata))
    
# 这里是每两次点击(起始点和目标点)就会执行按压按压屏幕操作,所以当
    
# self._click_count == 2 时才执行
    
self._click_count += 1

    if 
self._click_count == 2:

        self._click_count = 0

        # 弹出第二次点击时的坐标

        _next = self._coords.pop()
        
       # 弹出第一次点击时的坐标

        _prev = self._coords.pop()

       # 根据勾股定理计算出两点之间的距离

        self.jump_to_next(
            math.sqrt((_next[0] - _prev[0]) ** 2 + (_next[1] - _prev[1]) ** 2))

先点击 1 号点,再点击 2 好点即可。按压屏幕,执行跳跃操作



def jump_to_next(self, distance):
    press_time = int
(distance * self._coefficient)
    # cmd 最后一个参数 press_time 为按压时间,按压时间为 距离x按压系数,至于按压系数是
    # 多少则要根据每个人的手机分辨率而定,可自行测试调整
    # 100 100 200 200 这四个数字其实无所谓,只是模拟 swipe 操作时的坐标点而已
    cmd = 'adb shell input swipe 100 100 200 200 {}'
   .format(press_time)
    print
    (cmd)
    # 执行命令
    os.system(cmd)

基本上函数已经完成了,最后整理一下,将 on_click 函数绑定到图片上,循环操作


def run(self):
    # 循环执行操作
    while True:
        # 这里执行两次截图操作,不然会提示远程图片未找到的问题(可以注释其中一行试试看)
        self.generate_screenshot()
        self.generate_screenshot()
        figure = plt.figure()
        # 绑定 on_click 操作
        figure.canvas.mpl_connect('button_press_event', self.on_click)
        # 打开并显示图片
        img = Image.open('screenshot.png')
        plt.imshow(img)
        plt.show()
最后,只需要运行 run 函数即可,参数调得好的话,落点可以说是非常准了。手动刷到个上千分完全没问题,只要你要耐心…..

wechat_jump = WechatJump()
wechat_jump.run()

怎么样,是不是觉得其实也不难写出来。(其实原作者的第一版大概就长这样子)不过现在该项目,已经推出了自动跳跃的版本,兼容 iphone 的版本,甚至有大牛直接上了深度学习的版本!(有兴趣的同学可以阅读一下其源码,相信会有收获的。)不过这都是后来的事啦,总之一句话,想法才是最重要的!


原文发布时间为:2018-01-12

本文作者:陈键冬

本文来自云栖社区合作伙伴“Python中文社区”,了解相关信息可以关注“Python中文社区”微信公众号

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
2月前
|
机器人 数据安全/隐私保护 Python
企业微信自动回复软件,企业微信自动回复机器人,python框架分享
企业微信机器人包含完整的消息处理流程,支持文本消息自动回复、事件处理、消息加密解密等功能
|
2月前
|
数据采集 存储 C++
Python异步爬虫(aiohttp)加速微信公众号图片下载
Python异步爬虫(aiohttp)加速微信公众号图片下载
|
2月前
|
数据安全/隐私保护 Python
微信群成员导出工具, 微信群成员导出软件, 微信群管理工具软件【python】
这个工具提供了完整的微信群成员导出功能,包括登录微信、获取群列表、导出成员信息到Excel等功能
|
9天前
|
小程序 PHP 图形学
热门小游戏源码(Python+PHP)下载-微信小程序游戏源码Unity发实战指南​
本文详解如何结合Python、PHP与Unity开发并部署小游戏至微信小程序。涵盖技术选型、Pygame实战、PHP后端对接、Unity转换适配及性能优化,提供从原型到发布的完整指南,助力开发者快速上手并发布游戏。
|
1月前
|
数据采集 监控 调度
应对频率限制:设计智能延迟的微信读书Python爬虫
应对频率限制:设计智能延迟的微信读书Python爬虫
|
2月前
|
API 数据安全/隐私保护 开发者
企业微信自动加好友软件,导入手机号批量添加微信好友,python版本源码分享
代码展示了企业微信官方API的合规使用方式,包括获取access_token、查询部门列表和创建用户等功能
|
2月前
|
JSON 机器人 API
微信机器人自动回复插件,vx自动回复机器人脚本助手,python框架分享
这个微信机器人系统包含三个主要模块:主程序基于itchat实现微信消息监听和自动回复功能
|
2月前
|
监控 数据安全/隐私保护 Python
微信自动抢红包免费版,2025微信抢红包神器,微信红包挂苹果版【python仅供学习】
这个模拟项目包含5个模块:核心监控逻辑、用户界面、配置管理、实用工具和主程序入口
|
2月前
|
监控 数据库 数据安全/隐私保护
微信自动抢红包永久免费软件, 自动抢红包软件微信,脚本插件抢红包【python】
该实现包含三个核心模块:主监控程序、数据库记录模块和配置模块。主程序使用itchat监听微信消息
|
2月前
|
XML 数据安全/隐私保护 数据格式
微信xml卡片消息生成器,微信xml卡片生成啊制作工具,卡片消息一键发送【python】
这个实现包含三个主要模块:核心生成器类、预定义模板类和主程序入口。核心类负责获取微信

推荐镜像

更多