python脚本实现自动刷王者荣耀金币

疫情期间,一些朋友可能会选择游戏打发时间,我也是其中之一。为了快速获得金币,购买英雄,我百度了一些参考文章,结合编程实现实际,作此篇,帮助即使小白,只要会用python IDE,也能实现自动刷金币。

原理

使用python脚本,借助安卓调试工具ADB,模拟玩家人手点击游戏界面。冒险模式可以获取金币,而且可以重新挑战。使用脚本重复刷次模式,即可快速达到周金币上限。选择合适的关卡和难度,可以提高刷钱效率。

准备

1.安卓手机,处于开发者模式
2.电脑,python编辑器,ADB,截图工具

一、将手机处于开发者模式

  • 连续点击版本号,会弹出提示,可以打开开发者模式。以荣耀9手机为例:
    python脚本实现自动刷王者荣耀金币_第1张图片

二、电脑安装ADB

  • adb工具即Android Debug Bridge(安卓调试桥) tools。它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互。在此场景下,ADB用于模拟人手点击,所以应该不会被当做挂处理。

  • 下载地址:https://adbshell.com/downloads/
    python脚本实现自动刷王者荣耀金币_第2张图片

  • 下载解压后,需要将exe文件夹路径添加到系统环境变量中,添加方法自行百度。
    python脚本实现自动刷王者荣耀金币_第3张图片

三、调试ADB,借助截图获取关键点像素

  • 数据线连接电脑和手机,在“开发人员选项”中,打开USB调试,并选择USB配置为“MTP"。

  • 在cmd中输入adb,查看是否成功添加环境变量。如果没问题,再输入adb devices,验证手机是否与电脑连接,并进入USB调试模式。截图如下:
    在这里插入图片描述

  • 打开王者荣耀,进入主界面

  • 使用adb脚本命令进行手机截图。在cmd中输入adb shell /system/bin/screencap -p /sdcard/screenshot.png,手机会自动截图当前界面。

  • 使用“画图”打开截图,获取关键点像素位置,如“万象天工”像素点:(1500, 800)。使用命令adb shell input tap 1500 800,模拟点击,确定像素点位置是否合适。

  • 在手机中手动走一遍以下流程,重复上面两步获取关键点击点像素位置。当前游戏版本冒险模式流程:
    主界面–>万象天工–>冒险玩法–>挑战–>选择模式和难度–>下一步–>调整阵容–>闯关–>自动游戏–>点击返回–>再次挑战

  • 如此循环,就能实现自动刷金币,python脚本只是实现模拟人手点击的过程。

代码

此代码基本参考了li_myheart的文章,特别感谢!

# -*- coding: utf-8 -*-
import os
from time import sleep


def entry_choice():
    click_screen(1500, 800)
    print('进入万象天工')
    sleep(1)
    click_screen(1800, 1000)
    print('选择冒险玩法')
    sleep(1)
    click_screen(960, 520)
    print('选择挑战')
    sleep(1)
    click_screen(460, 350)
    print('选择陨落的废都')
    sleep(1)
    click_screen(1000, 270)
    print('召唤师战场')
    sleep(1)
    click_screen(1470, 300)
    print('选择普通级别')
    sleep(1)
    click_screen(1500, 920)
    print('选择下一步')
    sleep(1)
    click_screen(1450, 880)
    print('闯关')

    print('进入关卡')
    sleep(18)
    print("开始战斗...")
    sleep(80)
    click_screen(1000, 1000)
    print('点击屏幕继续')


def repeat_change():
    sleep(5)
    click_screen(1620, 1000)
    print('再次挑战')
    sleep(1)
    click_screen(1450, 880)
    print('闯关')
    sleep(98)
    click_screen(1000, 1000)
    print('点击屏幕继续')
    repeat_change()


# 通过像素点位置点击屏幕,x,y是屏幕坐标
# 截图之后通过画图工具获取x,y坐标值
# 调用adb点击手机屏幕事件
def click_screen(x, y):
    os.system('adb shell input tap {} {}'.format(x, y))


if __name__ == '__main__':
    entry_choice()
    repeat_change()

这是我第一次分享csdn文章,很多地方不太熟悉。可能会出现一些内容或格式上的错误,欢迎大家指正!祝大家春节愉快,身体健康!

你可能感兴趣的:(python,游戏)