python | 明日方舟好友访问和线索传递模拟点击

本文介绍了如何使用Python实现模拟点击功能,特别是在明日方舟游戏中,自动进行好友线索赠送和访问。通过cnocr进行文字识别,cv2进行图像处理,结合adb连接模拟器(如mumu)。详细阐述了位置确定、点击实现、线索识别和赠送的全过程,包括图像识别的优化策略,以提高自动化操作的准确性。
摘要由CSDN通过智能技术生成

在b站看到大佬https://www.bilibili.com/video/BV1jh411k7r9
用python实现了模拟器点击功能,并实现了公招的操作,因此自己也弄了一个好友访问的模拟点击功能。
用到比较重要的库:
cnocr,用于文字识别。
cv2,用于图像处理
此外,还要配置adb环境变量,用来连上模拟器(我这里用mumu模拟器)
本次要实现的功能:
1、好友线索赠送
2、好友访问
还有模拟器的分辨率为1024X576

一、连上模拟器

这段代码是复制b站大佬的,通过cmd调用adb指令连上mumu,不同模拟器,deviceName也有所不同

deviceName = '127.0.0.1:7555' #网易MuMu模拟器
adbDevices = os.popen("adb devices").read()
if deviceName not in adbDevices:
    print('Trying to connent to %s' % deviceName)
    os.popen('adb connect %s' % deviceName).read()

二、基础命令

模拟器最为重要的命令无疑是点击了,要做到准确的将线索送到好友手中,图像识别功能也是必要的;如何实现图像识别呢,首先需要将模拟器的图截下来,然后在图中相关部区域分别进行识别。
点击功能

def click(pos,delayTime):
        command = 'adb -s %s shell input tap %d %d' % (deviceName, int(pos[0]), int(pos[1]))
        #     print(command)
        os.system(command)
        time.sleep(delayTime)

同样是cmd通过adb命令实现,在发布命令后,再休眠设定的时间,让游戏卡一会(当然网速也是很关键的)。
截图功能

def screenshot(filename="screenshots/resolution_test.png"):
    os.popen('adb -s %s shell screencap -p /sdcard/01.png' % deviceName).read()
    os.popen('adb -s %s pull /sdcard/01.png %s' % (deviceName,filename)).read()

截图放到一个名字叫screenshots的文件夹中,截图名称叫resolution_test.png,游戏内的操作是单线程的,因此同时只有一张截图,名字一样也无所谓,毕竟分析识别完后就没用了。
导入照片

def loadPhoto(filename='screenshots/resolution_test.png'):
    screenshot = cv2.imread(filename)
    if screenshot is not None:
        return screenshot
    else:
        raise NameError

使用cv2库中的imread命令导入截图,生成一个RGB通道的三维矩阵,其中一维是宽(576),二维是长(1024),三维分别是(蓝色通道,绿色通道,红色通道)
识别文字

def ocrPhoto(img):
    return(CnOcr(name="ff").ocr(img))

用Cnocr识别图片的文字
这些用到很多次的功能我把它放到一个单独文件里。。。

三、位置的确定及点击的实现

首先我们的界面从明日方舟的主界面开始:
在这里插入图片描述
我们首先要进入好友界面,具体操作:好友->好友列表->访问第一个好友的基建,实现也很简单,上一步已经写有click函数,将“好友”坐标填进去就可以实现了。问题是坐标怎么知道呢?可以用文字识别一些复杂但灵活的方法,不过本人能力不足,还是手动获得这个坐标,然后在代码中写死吧。
mumu模拟器有截屏功能,将主页截屏,然后打开photoshop,调用标尺功能(快捷键ctrl+r),然后拖动刻度可以测量了,需要注意的是,不同的分辨率,得到的结果不一样在这里插入图片描述
用同样的方法,在点进好友后,可以得到”好友列表“坐标,同理得到“访问基建“坐标

#进入个人名片
click([305,461],2)
#进入好友列表
click([110,175],3)        
#进入访问界面
click([800,130],5)

最终到达:
在这里插入图片描述

四、利用文字识别、图像判断实现线索传递

在访问10个好友收取信用点之前,先进行线索传递。
进入线索传递界面,如下图:

#点击线索传递
click([76,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值