python实现微信跳一跳辅助工具

说明
1.windows上安装安卓模拟器,安卓版本5.1以上
2.模拟器里下载安装最新的微信6.6.1
3.最好使用python2.7,python3的pyhook包有bug,解决比较麻烦

步骤
1.windows上安装python2.7,配置好环境变量和pip
2.到这个网站下载对应版本的pyHook和pywin32

http://www.lfd.uci.edu/~gohlke/pythonlibs

2.打开cmd,安装下载好的whl文件和其他库

pip install pywin32-221-cp27-cp27m-win_amd64.whl
pip install pyHook-1.5.1-cp27-cp27m-win_amd64.whl
pip install pyuserinput

3.桌面新建jump.py文件,复制以下内容

import pymouse, time, pyHook, pythoncom, math, random

m = pymouse.PyMouse()
global start_pos, end_pos
start_pos = None
end_pos = None

def onKeyboardEvent(event):
    global start_pos, end_pos
    if event.Key == 'Q':
        start_pos = m.position()
        print(start_pos)
    if event.Key == 'W':
        end_pos = m.position()
        print(end_pos)
    if event.Key == 'Space':
        if start_pos and end_pos:
            dis = int(math.sqrt(math.pow(start_pos[0]-end_pos[0],2)+math.pow(start_pos[1]-end_pos[1],2)))
            times = round((dis / 0.3) / 1000 , 3) 
            if dis < 500:
                print '>> ', dis, times
                x = random.randint(50, 400)
                y = random.randint(400, 700)
                m.press(x,y)
                time.sleep(times)
                m.release(x,y)
                start_pos = None
                end_pos = None
    return True

def main():
    hm = pyHook.HookManager()
    hm.KeyDown = onKeyboardEvent
    try:
        hm.HookKeyboard()
    except Exception as e:
        pass
    pythoncom.PumpMessages()
if __name__ == "__main__":
    main()

4.运行jump.py

python desktop\jump.py

5.使用说明

a.模拟器打开微信并进入跳一跳游戏界面
b.把模拟器放到桌面最左端
c.把鼠标放到紫色小人最下端中间点,按下Q键
d.把鼠标放到目标图形中心点,按下W键
e.按下空格键会自动跳到目标点
f.反复Q、W、空格键

如果空格点的坐标不准,自行调整一下代码里的坐标范围

### 使用Python实现微信自动化辅助工具 #### 工具概述 为了实现微信小游戏“”的自动化操作,开发者通常会选择结合计算机视觉库OpenCV来识别游戏界面中的目标位置,并通过ADB(Android Debug Bridge)发送触摸指令给设备。这种方法不仅适用于真机也兼容于某些特定配置下的安卓模拟器[^2]。 #### 开发环境准备 - **操作系统**: Windows/Linux/macOS均可适用。 - **编程语言**: Python (建议版本<=3.6),因为更高版本可能会遇到依赖包安装失败的问题[^3]。 #### 主要技术栈 - **图像处理**: OpenCV用于截取屏幕并分析图片内容,定位棋子当前位置以及下个落点的位置。 - **命令行接口**: ADB用来向移动终端发出点击事件,模拟人类手指触碰屏幕的动作效果。 - **开发框架/库**: NumPy提供矩阵运算支持;Pillow负责图像读写转换等基础功能。 #### 实现流程详解 ##### 图像采集与预处理阶段 利用adb shell screencap命令获取当前手机屏幕上显示的画面数据保存成png格式文件,之后借助opencv-python加载此图像资源进入内存做进步加工处理: ```bash adb shell screencap -p /sdcard/screenshot.png && adb pull /sdcard/screenshot.png . ``` 接着调用`cv2.imread()`函数载入本地存储的PNG格式截图作为后续算法输入参数之。 ##### 关键坐标提取环节 基于前期准备工作所得到的游戏场景快照,在此基础上运用边缘检测算法定位出主角所在区域边界轮廓及其中心坐标的精确数值。同时也要找到下块平台的具体方位信息以便计算两者之间的相对距离差值Δd。 ##### 动作执行部分 当明确了起始点A(x₁,y₁)同终点B(x₂,y₂)间的直线间距后,就可以据此推导出合理的按压时间t=K×|AB|(其中比例系数K需经多次实验微调而定)。最后按照设定好的时长触发次短促的轻触动作完成单次跃过程。 ```python import cv2 import numpy as np from PIL import ImageGrab import time import os def get_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 # 计算按下时间 cmd = 'adb shell input swipe 320 410 320 410 ' + str(press_time) print(cmd) os.system(cmd) if __name__ == '__main__': while True: try: img_rgb = cv2.imread('autojump.png') template = cv2.imread('target.png', 0) w, h = template.shape[::-1] method = eval('cv2.TM_CCOEFF_NORMED') res = cv2.matchTemplate(img_gray, template, method) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) top_left = max_loc bottom_right = (top_left[0] + w, top_left[1] + h) center_x = int((bottom_right[0]+top_left[0])/2) center_y = int((bottom_right[1]+top_left[1])/2) last_center_x = this_center_x this_center_x = center_x diff = abs(this_center_x-last_center_x) if(diff>threshold): # 只有当变化超过定阈值才认为有效 jump(diff) time.sleep(interval_between_jumps) except Exception as e: print(e) break ``` 上述代码片段展示了如何使用Python配合ADB工具链达成自动控制目的的个简化版示例[^4]。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值