边学语言边写程序无疑是最好的,对于自己现在的情况就是想写一个阴阳师游戏脚本,因为阴阳师这个游戏重复动作太高,虽然推出了小纸人这个官方脚本但是感觉是杯水车薪,所以就在学python的时候写个阴阳师的脚本出来使用。
准备了雷电模拟器,然后在PyCharm上进行开发。
首先需要安装adb,教程网上都有,主要用到的方法是截屏获取图片对比和模拟鼠标点击
adb shell screencap -p *.png//获取截屏
adb pull sdcard/*.png F:\* //将截屏发送到电脑目录下
adb shell input tap //鼠标点击
python下的adb命令执行则是使用os来对命令行进行操作
os.system(*) //执行命令行指令
假定阴阳师程序刚好结束了一场御魂,则此时界面应该是在御魂结算界面,我们则需要用adb进行屏幕图片获取,然后利用cv2来对图片进行对比,看是否为御魂结算界面,如果是则进行鼠标点击事件,退出御魂结算界面。
图片对比利用的是cv2自带的模板匹配,粗略来说就是将一张小图和大图进行对比,看小图图像是否在大图中出现。
那么我们就可以截取一个御魂结算界面的特征图片然后和获取的图片进行比对,没错,就是这个
img1代表待匹配图像, img2代表模板
res = cv2.matchTemplate(img1,template,cv2.TM_CCOEFF_NORMED) //图像模板匹配函数
maxres = res.max() //maxres大于0.9即可认为模板在匹配图像中出现
按照这个流程就可以写出大多数的游戏脚本了
目前我只写了百鬼,组队御魂和业原火,如果能参考我的代码的话其它的比如御灵也不难写出(当然bug应该有但是我还没发现,发现了会更新),代码在git上,地址:
https://github.com/IFrestart/YYS