前言
最近喜欢玩公主连结,之前也喜欢玩阴阳师之类的游戏。 此类游戏将具有诸如初始编号之类的东西,或者可以发行的东西。
其实作为程序员,这些事情完全可以通过写代码的形式,手动帮我们完成。 游戏脚本似乎并不难。 最简单的体验方式就是下载一个Airtest,直接拍几张图,写几层代码,然后就可以按照自己的逻辑玩游戏了。
其实这篇文章不是讲如何使用Airtest,而是用原来的python+opencv来实现里面的操作。
这三天写了一个刷公主连结初始号的程序,算不上游戏脚本的老手。 本文主要是分享一些基础技术和使用中的经验。
计划工作
首先,我们必须完成以下计划。
这里我把adb和tesseract放在了百度云盘里,顺便放了一个录制的疗效视频。
链接:pan.baidu.com/s/1edTPu2o7... 提取码:33aw
python库安装
pip install pillow pytesseract opencv-python
复制代码
另外,如果需要,可以安装uiautomator2,本文不做介绍。
使用 adb 获取 Android 设备
这里主要涉及到单个Android设备的ADB连接操作。 首先,我们打开模拟器。
然后我们调用adbdevices获取当前的Android设备,这里是一个模拟器。
收到后可以调用adbshell测试是否可以进入Android设备的shell环境,确认可以输入exit退出。
如果有时候进不了shell,可以先调用adbkill-server,再调用adbdevices。
可能常用的 ADBShell 命令
然后是一些ADB命令操作。 通过adb命令辅助卡盟,我们可以使用python来操作Android设备。
截图
最常见的操作是截屏。 首先调用screencap进行截图并放置到Android设备上,然后将截图下拉到笔记本中。
def take_screenshot():
os.system("adb shell screencap -p /data/screenshot.png")
os.system("adb pull /data/screenshot.png ./tmp.png")
复制代码
下拉文件
下拉文件就是刚才的adb pull。 以公主连结为例bat执行python脚本,下面的代码可以导入账号信息的xml,然后就可以通过xml进行登录了。
os.system(f"adb pull /data/data/tw.sonet.princessconnect/shared_prefs/tw.sonet.princessconnect.v2.playerprefs.xml ./user_info.xml")
复制代码
上传文件
有了下拉,自然会有上传,可以通过adbpush来完成。 以公主连结为例,以下代码即可完成账号切换。
# 切换账号1
os.system("adb push ./user_info1.xml /data/data/tw.sonet.princessconnect/shared_prefs/tw.sonet.princessconnect.v2.playerprefs.xml")
# 切换账号2
os.system("adb push ./user_info2.xml /data/data/tw.sonet.princessconnect/shared_prefs/tw.sonet.princessconnect.v2.playerprefs.xml")
复制代码
单击屏幕上的某个位置
def adb_click(center, offset=(0, 0)):
(x, y) = center
x += offset[0]
y += offset[1]
os.system(f"adb shell input tap {x} {y}")
复制代码