使用Python实现操控王者荣耀(adb+图片识别)

因为是用手机发布的这篇文章,就不做过多的介绍了,简单的介绍一下这个工具。

这个脚本主要使用图像匹配,然后通过adb命令操作手机,所以请确保在手机的开发者选项中启用USB调试。(以华为为例)
使用Python实现操控王者荣耀(adb+图片识别)_第1张图片
使用Python实现操控王者荣耀(adb+图片识别)_第2张图片
其次需要在脚本目录下新建一个btn文件夹,里面存放需要点击的按钮的截图,另外还需要下载你的系统对应的adb程序,并放在脚本同级目录下(打包好的软件稍后放上链接,可直接使用)

下面是程序的源码,打包好的程序稍后我会放上链接。

import aircv as ac
import subprocess
import random
import time

count = 0
coins = 4900  # 3900 - 1175 - 45 * 3


def fprint(msm):
    print(f"[{time.strftime('%H:%M:%S', time.localtime(time.time()))}] {msm}")


def getScreen():
    subprocess.run(f"adb.exe shell screencap -p /sdcard/screen.png", capture_output=True)
    subprocess.run(f"adb.exe pull /sdcard/screen.png", capture_output=True)
    # time.sleep(2)
    # fprint("手机截图成功")


def sendKey(pos):
    width, height = pos[0], pos[1]
    subprocess.run(f'adb.exe shell input tap {width} {height}', capture_output=True)


def find(btn, opt=True):
    global count
    global coins
    imsrc = ac.imread('screen.png')
    imobj = ac.imread(btn)
    pos = ac.find_template(imsrc, imobj)
    if pos and pos.get('confidence') > 0.90:
        w = [pos['rectangle'][0][0], pos['rectangle'][2][0]]
        h = [pos['rectangle'][0][1], pos['rectangle'][1][1]]
        pos = [random.randint(w[0], w[1]), random.randint(h[0], h[1])]
        sendKey(pos)
        if btn == "btn/dianjipingmujixu.png":
            count += 1
            fprint(f"已经完成了{count}次挑战")  # ,总收益为{45 * count}; 剩余收益:{coins - 45 * count}(按总收益4900计算,请结合自己账号情况)")
            if coins - 45 * count < 0:
                fprint(f"已经达到金币上限,脚本退出")
                exit()
        elif btn == "btn/wanxiangtiangong.png":
            fprint(f"点击 万象天工{pos}")
        elif btn == "btn/maoxianwanfa.png":
            fprint(f"进入 冒险模式{pos}")
        elif btn == "btn/tiaozhan.png":
            fprint(f"进入 挑战{pos}")
        elif btn == "btn/xiayibu.png":
            fprint(f"点击 下一步{pos}")
        elif btn == "btn/tiaoguo.png":
            fprint(f"点击 跳过{pos}")
        elif btn == "btn/zaicitiaozhan.png":
            fprint(f"点击 再次挑战{pos}")
        elif btn == "btn/dianjipingmujixu.png":
            fprint(f"点击 点击屏幕继续{pos}")
        elif btn == "btn/chuangguan.png":
            fprint(f"点击 闯关{pos}")
    elif opt:
        pass
    else:
        exit("未知元素导致程序异常退出")


if __name__ == "__main__":
    fprint("程序启动,开始监听手机屏幕,请确保手机已经打开USB调试")
    while True:
        # 点击挑战
        getScreen()
        find("btn/wanxiangtiangong.png")
        find("btn/maoxianwanfa.png")
        find("btn/tiaozhan.png")
        find("btn/xiayibu.png")
        find("btn/chuangguan.png", opt=True)
        find("btn/tiaoguo.png", opt=True)
        find("btn/dianjipingmujixu.png", opt=True)
        find("btn/zaicitiaozhan.png", opt=True)
        # time.sleep(1)

下面是我自己运营的微信小程序“但行趣事”和公众号“微电脑”,更多的技术文章以及视频我会放到小程序和公众号当中,有志同道合的小伙伴也可以在小程序(联系客服按钮)或者公众号(直接留言)当中联系我们

但行趣事小程序
微电脑公众号

你可能感兴趣的:(笔记)