源码地址:https://github.com/chenxingxing6/wechat_jump_game
可能刚开始上手的时候,因为时间距离之间的关系把握不恰当,只能跳出几个就掉到了台子下面。如果能利用图像识别精确测量出起始和目标点之间测距离,就可以估计按压的时间来精确跳跃。
原理说明
将手机点击到《跳一跳》小程序界面
用 ADB 工具获取当前手机截图,并用 ADB 将截图 pull 上来(Andorid Debug Bridge. 顾名思义, 这是一个Debug工具.)
adb shell screencap -p /sdcard/autojump.png
adb pull /sdcard/autojump.png .
- 计算按压时间
- 手动版:用 Matplotlib 显示截图,用鼠标先点击起始点位置,然后点击目标位置,计算像素距离;
- 自动版:靠棋子的颜色来识别棋子,靠底色和方块的色差来识别棋盘;
- 用 ADB 工具点击屏幕蓄力一跳
adb shell input swipe x y x y time(ms)
搭建python环境:我的博客前面有教程
我们还要安装的库:
pip3 install matplotlibMatplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形
tkinter是Python下面向tk的图形界面接口库,可以方便地进行图形界面设计和交互操作编程。tkinter的优点是简单易用、与Python的结合度好。tkinter在Python 3.x下默认集成,不需要额外的安装操作;不足之处为缺少合适的可视化界面设计工具,需要通过代码来完成窗口设计和元素布局。
安装adb:
sudo apt-get update将android设备连接至电脑,通过lsusb查看usb设备,如下红色部分对应的就是android设备
sudo apt-get install android-tools-adb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 027: ID 1f3a:1002
Bus 002 Device 003: ID 046d:c077 Logitech, Inc.