目录
前言
乱斗不过是个过气的网易弃游罢了。
额,虽然但是,作为在安卓2战区享有一定知名度的打工仔,每天无脑上100来个号,重复几个固定操作也是着实让我有点厌恶。因此,我乘着寒假这几天用尽毕生所学写了个自动买礼包的python程序,实现了从自动买礼包到自动记录在Excel上的一系列小功能。这一举动也成功将我带上了自动化耕作的道路,从此解放了双手,过上了幸福美满的生活(狗头)。
这个脚本的终极目标是买礼包与记录,分解下来只需要实现以下几个功能即可:滑动点击、截取图片、图片比对、文字识别、操作Excel表格。
下面我来一一介绍如何解决。
一、滑动点击&截图
其实实现这一步是比较简单的,一开始我用的模块PyMouse,直接操纵鼠标对雷电模拟器进行操作,后面发现这实在是太拉了:首先得固定雷电模拟器的分辨率和桌面上的相对位置,每次位置必须一样程序才有效,其次运行期间我打不了LOL啥的,甚至不能操作鼠标。显然这不能满足我的要求。于是我另寻他法,发现了雷电模拟器的新天地--adb,直接调用雷电的内部命令行,轻易的实现了目的操作。
安装好雷电模拟器之后,大家可以在安装目录下面找到ldconsole.exe和ld.exe两个命令行程序。ld命令用来执行adb命令,而ldconsole.exe更是重量级,它可以控制模拟器参数的设定,包括imei,序列号,手机号分辨率等等参数,还可以检测和控制模拟器的启动和关闭。甚至能够模拟输入,按键,滑动等操作。
以下是用来自雷电论坛官方论坛中的提示写的几个简单函数:
def touch(index: int, x: int, y: int): # 点击
Dnconsole.touch(index, x, y, 0)
time.sleep(0.5)
def touch_01(index: int, x: int, y: int, z: int, w: int): # 长按
Dnconsole.touch(index, x, y, 0)
for i in range(0, z):
Dnconsole.touch(index, x, y, 0)
time.sleep(w)
def swipe(index: int, x1: int, y1: int, x2: int, y2: int): # 滑动
A = [x1, y1]
B = [x2, y2]
Dnconsole.swipe(index, A, B)
time.sleep(1.5)
截图功能虽然简单,但是里面没有现成的,我摸索着搞出了一个函数:
def screen(index: int):
cmd = "adb -s 127.0.0.1:5559 shell screencap -p /sdcard/Pictures/Screenshots/two.png"
os.popen(cmd)
time.sleep(0.5)
-p后面是截图保存的地址,-s后面是模拟器的序列号,在cmd中输入adb devices即可得到。
关于截图其实还有一个小问题,那就是局部截图。比如下图我只想要币的数字所在局部图,如何实现呢?
其实很简单啦,在这张截图的基础之上再裁剪一次就ok了,如下:
<