碧蓝航线-传颂之物脚本(部分)

碧蓝航线新出的联动图SP4

由于这游戏过于的肝   想要解放自己的双手   所以想写一段电脑自己操作的脚本进行自己代挂

代码本身理解十分简单   整个过程只是比较繁琐   后面一段时间因为自己的原因有事情而未全部完成

希望下次如果有这种比较简单的机制的活动时  你也能解放自己双手

该代码需要adb(百度一下  很简单的连接)  网易mumu模拟器   屏幕为:1440 x 810(其他的也行   需要知道连接代码   比如我用的mumu:"adb connect 127.0.0.1:7555")  还需要一张结算图和一张boss图进行结算和攻击的匹配

上代码分析:

import os
import random
import time
import cv2
import numpy as np
import win32api   #这些包用pycharm安装分分钟的事

#连接mumu模拟器   首先先断开服务再执行连接
def Connection():
    cmd = 'adb kill-server'
    tmp = os.popen(cmd).readlines()
    cmd = 'adb connect 127.0.0.1:7555'
    tmp = os.popen(cmd).readlines()
    print(tmp)

#模拟点击   这个是代码的核心  也是繁琐的根源
def Click(x,y):
    cmd = 'adb shell input tap {x1} {y1}'.format(x1 = x,y1 = y)
    print(cmd)
    os.system(cmd)

#模拟滑动    最后一关boss并未在我切换2队的页面  所以得滑动一段固定的距离让boss关出现在我切换2队后的页面
def Slide(x,y,x3,y3):
    cmd = 'adb shell input swipe {x1} {y1} {x2} {y2}'.format(x1=x, y1=y,x2=x3,y2=y3)
    print(cmd)
    os.system(cmd)

#通过adb进行截图  让后面图片的匹配有基准
def Screenshot():
    os.system('adb shell screencap -p /sdcard/loading.png')
    os.system('adb pull /sdcard/loading.png')
    return "loading.png"

#boss关的位置匹配
def BossCde(BossMap):
    img = cv2.imread(BossMap,0)
    template = cv2.imread('boss.png',0)#分别加载boss和当前场景的图片

    res = cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED)
    threshold = 0.80#匹配精确度
    gps = []

    loc = np.where(res >= threshold)
    for pt in zip(*loc[::-1]):
        gps.append(pt)#将匹配到的位置添加到gps列表中
    return gps

#打开mumu自动登录时到登录界面进行匹配  因为每次更新都会换登录界面  当然如果你手动登上去了这就不需要了
def Identification1(loading):
    img = cv2.imread(loading,0)
    img_gray = cv2.cvtColor(img,cv2.COLOR_BAYER_BG2GRAY)
    template = cv2.imread("lon.png",0)
    res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
    threshold = 0.9
    print(res)
    if res[0] > threshold:
        Click(400,400)
    else:
        print("需要更新版本")

#关卡结算匹配
def Identification2(loading):
    img = cv2.imread(loading,0)
    img_gray = cv2.cvtColor(img,cv2.COLOR_BAYER_BG2GRAY)
    template = cv2.imread("Atk2.png",0)#与结算界面进行匹配
    res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
    threshold = 0.7
    if res[0] > threshold:
        time.sleep(1)
        Click(1225,680)
        time.sleep(2)
        Click(1225, 680)
        time.sleep(4)
        Click(1225, 680)
        time.sleep(2)#因为结算完了这几次点击返回到地图界面这几次点击中每点一次就会出现一点延迟  如何不加sleep()回出现代码跑完但结算不出
        return 1

#自动启动mumu模拟器  这是我的电脑上mumu 的位置
def Lon():
    win32api.ShellExecute(0, 'open', 'F:\\emulator\\nemu\\EmulatorShell\\NemuPlayer.exe', '', '', 1)
    time.sleep(25)
    Connection()
    Click(216,117)

#登录总流程   
def LonIn():
    Lon()
    time.sleep(25)
    Identification1(Screenshot())
    Click(760,345)

#开始我们的自动(需要进入到四个选择sp界面执行)
def Activity():
    Click(733, 418)
    time.sleep(1)
    Click(1040,543)
    time.sleep(3)
    Click(1195,700)
    time.sleep(3)
    Click(860,665)
    time.sleep(5)
    Click(556,552)
    time.sleep(3)
    Attack()
    time.sleep(3)
    Click(700, 440)
    time.sleep(3)
    Attack()
    time.sleep(3)
    Click(830, 350)
    time.sleep(3)
    Attack()
    time.sleep(3)
    Click(985, 420)
    time.sleep(3)
    Attack()
    time.sleep(3)
    Click(1143, 551)
    time.sleep(3)
    Attack()
    time.sleep(3)
    Click(1067, 756)
    time.sleep(1)
    Click(713, 183)#这一步是存在问题  因为这个点的关卡是随机刷的  很可能未刷出来 导致程序一直卡在结算界面  需要完善(进行更多的判断)
    time.sleep(3)
    Attack()
    time.sleep(3)
    Slide(1210, 166, 1210, 676)
    p = BossCde(Screenshot())
    print(p)
    Click(p[0][0] + 50, p[0][1] + 50)
    time.sleep(7)
    Attack()
    time.sleep(4)

#攻击结算匹配  到出击界面后执行即可完成关卡的结算
def Attack():
    n = 0
    Click(1200,720)
    for i in range(1,180):
        if n >= 65:
            TF = Identification2(Screenshot())
            if TF == 1:
                break
            time.sleep(10)#曾经用过一秒一秒的刷  但是发现内存是个问题  适自己的队打的普遍时间定
            n += 1
        else:
            n += 1
            time.sleep(1)


Connection()#首先连接上mumu
Activity()#从四张sp图中自动选择  并执行代挂流程

总结:

    代码瑕疵比较多,因为是半成品很多地方需要进行完善,比如中途出现紫皮船及new回出现少点击一下而卡在结算界面出不来、当打完接到了紧急委托(尤其是晚上)将无法进行识别也会导致代码功能错乱、当船坞满了的时候也会出现匹配选择问题、还有代码中提及的倒数第二关的判断等,这些就是主要的问题,我希望读者能以我这个案列为例下次给自己写一个好点的脚本代码,因为代码本身思想很简单所以简单关卡实现起来并不是很难。养养肝吧。233

转载于:https://www.cnblogs.com/MaGnet/p/10108888.html

### 回答1: Hercules_3-2-8是一个有趣的名字,可能是一个昵称或者在线身份。根据名字本身,我们无法确定其具体含义,因为它可能只是一串数字和字母的组合,而没有明确的语义。然而,根据希腊神话中的海克力士(Hercules)和数字3、2和8的可能意义,我们可以做一些猜测。 海克力士是希腊神话中的英雄,也是宙斯和一个人类母亲所生的儿子。他以其极大的力量和勇气而闻名,他的英勇事迹被广泛传颂。那么,海克力士在这个命名中可能象征着坚韧、勇气和坚持不懈的精神。 而数字3、2和8可能代表一些特殊的含义。例如,在数学中,数字3可能代表三角形、三维空间等等。数字2可能代表对称、二分等等。数字8在许多文化中被视为象征无限和完整性的数字。 综合起来看,Hercules_3-2-8可能代表一个具有海克力士的英勇精神、数学意义和对无限完整性的追求的人。或者,它也可能是一个个人在网络世界中的独特标识,没有特定的意义可言。无论如何,这个名字给人留下了很大的想象空间,可以运用在各种场景中,而真正的含义可能只是对拥有者本人知晓。 ### 回答2: Hercules_3-2-8是指赫拉克勒斯任务计划管理软件的一个版本。赫拉克勒斯是一款用于项目管理的工具,旨在帮助用户规划、组织和监控他们的项目。其中的3-2-8代表了该软件的版本号。 通过使用赫拉克勒斯_3-2-8,用户可以轻松地创建项目计划,并设定任务、里程碑和关键路径。这款软件的主要目标是帮助用户可视化项目进度和资源分配,以便更好地管理他们的项目。 赫拉克勒斯_3-2-8提供了许多功能,如计划视图、资源管理、风险评估和报告生成。用户可以根据需要定制项目计划,并与团队成员实时协作。此外,该软件还支持导入和导出项目数据,以与其他软件进行集成和共享。 总之,赫拉克勒斯_3-2-8是一款功能强大的项目管理软件,为用户提供了一种有效的方法来规划和管理他们的项目。无论是个人还是组织,使用赫拉克勒斯_3-2-8都可以提高项目的执行效率和成功率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值