python脚本 游戏赚金币兑换钱_一种王者荣耀刷金币方法(python脚本)

所用工具环境

python3.6.5 和 支持自动鼠标键盘点击等编程的pyautogui功能包

windows PC,安卓模拟器bluestacks,安装王者荣耀

基本思路

王者荣耀有闯关任务模式可以获得金币,任务两三分钟一般就可以完成,支持自动模式,一次可获取三四十金币,且可以重复刷取。

利用脚本,模拟任务开启点击,进入后自动执行,中间对话跳过,最后任务完成检测,再次启动任务。均是通过截屏信息获取当前在做什么,然后应该点击什么,如此往复执行。

脚本所用关键功能说明

网上有关于pyautogui包的使用的一些参考,有一些是相对过期的,功能接口调用存在些差别,可以在安装pyautogui包后,使用python doc 来查找相关API说明。

pyautogui.screenshot 用于截屏。

下面是py doc中函数原型,可传入文件名,最终返回截屏图片,保存在本地

screenshot = _screenshot_win32(imageFilename=None)

pyautogui.locateOnScreen 用于查找局部图片位置(像素点区域位置)。输入图片文件名,最终返回图片所在位置,如果当前屏幕不存在该图片,则返回None

locateOnScreen(image, grayscale=False, region=None)

事先截取好中间需要点击的按钮图片,保存在本地,然后截屏中去匹配查找按钮图片是否存在及其位置(该函数实际并不需要事先调用screenshot)

pyautogui.center 用于获取某一像素区域的中心像素点位置。

center(coords)

源文件

pics中是事先截取的

实际运行效果展示

最开始选用最后一个关卡任务(大师级)

下一步,进入任务后,再启用脚本

后面就自动执行了

录制过屏幕,markdown下视频无法上传,想制作gif来这的,视频太大需要一定裁剪处理,暂时不会。。

源码展示

很简单,重在功能,没有注重什么规范

(业余python选手,工作之中也是python用于内部工具开发,代码槽点可能较多)。

# -*- coding: utf-8 -*-

import pyautogui

import time

pyautogui.FAILSAFE = False

screenshot = pyautogui.screenshot

pngLocate = pyautogui.locateOnScreen

def click(x,y):

pyautogui.moveTo(x,y)

pyautogui.click()

def get_button_center_from_screen(button_png,png_path='pics'):

screen = screenshot("screen.png")

button_png = png_path + '\\' + button_png

start_pos = pngLocate(button_png)

if start_pos == None:

#找不到button

print("{} not exsit on current screen".format(button_png))

return 0,0

return pyautogui.center(start_pos)

def AutoMouse():

print("Start")

n = 1

while(n<60):

print("{now} 第{n}次\n".format(now=time.strftime("%m-%d %H:%M:%S"), n=n))

x, y = get_button_center_from_screen('开始闯关.PNG')

click(x,y)

time.sleep(5)

loading = False

#是否正在加载中

while(1):

x,y = get_button_center_from_screen('加载中.PNG')

time.sleep(3)

if (x,y) != (0,0):

break

loading = False

print("加载中\n")

while(1):

x,y = get_button_center_from_screen('加载中.PNG')

if (x,y) == (0,0):

break

print("加载完成\n")

#检查是否初始画面需要跳过

x,y = get_button_center_from_screen('跳过.PNG')

if (x,y) == (0,0):

print("no need Jump over")

else:

print("need Jump over")

click(x,y)

#检查是否已经启用自动

x,y = get_button_center_from_screen("未启用自动.PNG")

if (x,y) != (0,0):

print("not auto run")

click(x,y)

else:

print("already auto run")

#运行监测,是否结束,以及中间存在需要跳过,结束则开启下一次 每5s检测一次

while(1):

time.sleep(3)

x,y = get_button_center_from_screen('跳过2.PNG')

if (x,y) == (0,0):

print("no need Jump over")

else:

print("need Jump over")

click(x,y)

x,y = get_button_center_from_screen("结束后继续.PNG")

if (x,y) == (0,0):

print("not over")

else:

print("all over.\n")

click(x,y)

time.sleep(5)

#start 闯关

print("Start again")

x, y = get_button_center_from_screen('再次挑战.PNG')

n = n+1

click(x,y)

time.sleep(10)

break

if __name__ == '__main__':

AutoMouse()

注意事项

脚本可能需要在管理员权限下执行(cmd启动时以管理员身份运行)(click执行没有效果的时候,就是权限问题导致的)

由于电脑尺寸可能不是绝对一样,所以事先截取的按钮图片可能都不一样,自行截取个人PC上实际王者荣耀刷任务运行时画面,对应替换

个人在使用过程中遇到过的问题:

有一次晚上挂机,电脑死过机,应该和这个没关系。。。

安卓模拟器中的王者荣耀出现卡机(手动点击也是没有反应,最后只好重启了模拟器),不知有没有关系

加载图片 匹配不到,原因是王者荣耀有更新,任务开始后加载页面的广告有变化,建议截取关键按钮时,尽量截取小部分,不要截取太多。

后续

可以做的更好,日志记录实际运行情况,出问题时,方便回溯。利用图片识别技术来识别图片中的文字,来找到对应按钮的位置。健壮性考虑,如果中间偶尔出现卡机,点击失效,如何检测出来,以及后续该怎么处理。当然需要更高的技术要求。喜欢且有相关能力的可以搞一下。

欢迎留言交流 _

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270856.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server数据库架构与对象相关知识笔记

1、数据库架构简介数据库架构是从SQL Server2005版本之后引入的概念。数据库架构独立于创建它的数据厍用户而存在&#xff0c;每个对象都属于一个数据库架构&#xff08;对象包括表、视图、存储过程、函数、触发器等&#xff09;2、 数据库、架构和数据库对象数据库架构是一个独…

html ajax 数据传送,HTML AJAX 简单数据JS

ajax请求var xmlhttp;var data;//Mozilla ,chmore浏览器(将XMLHttpRequest对象作为本地浏览器对象来创建)if(window.XMLHttpRequest){ //Mozilla 浏览器xmlhttp new XMLHttpRequest();}else if(window.ActiveXObject) { //IE浏览器//IE浏览器(将XMLHttpRequest对象作为ActiveX…

转换

1024字节1K 1024*10241M 1024K1M 1024M1G 字

蒙提霍尔悖论(三门问题)终极分析(补充)附完整源码

上一篇文章分析了经典的蒙提霍尔问题&#xff0c;最后的结论是更换选择后有2/3的机会中奖。蒙提霍尔问题到此已经完结&#xff0c;但事实却并非如此。 在蒙提霍尔问题中&#xff0c;主持人事先知道汽车在哪个门后面&#xff0c;并且他一定会选择没有汽车的那扇门。如果我们稍稍…

超融合和服务器关系_超融合与传统服务器区别

超融合与传统服务器的区别1.1概述虽然超融合架构以其为用户带来的巨大价值&#xff0c;已经被越来越广泛地接受&#xff0c;但市场上对超融合仍然有诸多不清晰的概念和疑问&#xff0c;本系列文章将力求对这些概念进行逐一解释。本篇解释大家经常问到和混淆的一个概念&#xff…

电脑技巧:整理电脑键盘上每个键的含义

电脑键盘是把文字信息的控制信息输入电脑的通道&#xff0c;从英文打字机的键盘演变而来的。它最早出现在电脑上的时候&#xff0c;还是一种叫做“电传打字机”的部件。那些陌生的键盘按键都有什么用途? 很多新手不知道键盘上功能键和字母数字键以外的键盘按键有什么用&#x…

html统计表合并单元格的快捷键,合并单元格快捷键,小编教你excel怎么合并单元格快捷键...

合并单元格是我们经常要做的工作&#xff0c;如果有合并单元格的快捷键正是我们想要的&#xff0c;很遗憾&#xff0c;微软并没有直接提供这样一个快捷键&#xff0c;在excel表的运用中&#xff0c;难免会碰到希望将两个单元格合并的时候&#xff0c;那么怎么做呢&#xff1f;下…

SQLServer数据库实例相关知识笔记

1、概念介绍SQL实例实际上就是SQL服务器引擎&#xff0c;每个SQL Server数据库引擎实例各有一套不为其他实例共享的系统及用户数据库。在一台计算机上&#xff0c;可以安装多个SQL SERVER&#xff0c;每个SQL SERVER就可以理解为是一个数据库实例。2、SQL实例分类SQL实例分为默…

内存分配策略

举个例子&#xff0c;比如eden区为16M&#xff0c;s0区为2M,s1区为2M,old区为40M 一个大对象20M,此时eden区&#xff0c;s0区&#xff0c;s1区都放不下&#xff0c;那个大对象直接进入老年带 M

ajxs跨域 php_PHP项目中是如何处理Ajax请求与Ajax跨域的

PHP项目中是如何处理Ajax请求与Ajax跨域的发布时间&#xff1a;2020-12-14 16:35:47来源&#xff1a;亿速云阅读&#xff1a;98这期内容当中小编将会给大家带来有关PHP项目中是如何处理Ajax请求与Ajax跨域的&#xff0c;文章内容丰富且以专业的角度为大家分析和叙述&#xff0c…

数据制作

1.数据准备&#xff0c;我们需要一个train和valid文件夹&#xff0c;一个train.txt和val.txt&#xff08;图片文件夹的位置可以任意&#xff0c;但是这两个txt文件的位置在data/fingervein/目录下&#xff09; train和valid文件夹自然就存放着待训练的图片&#xff0c;train.tx…

SQLServer数据库文件组相关知识笔记

1、数据库文件组概念数据库文件被组织在称为“文件组”的逻辑组中。文件组是所创建对象&#xff08;如表或索引&#xff09;的目标容器&#xff0c;对象数据将分散在其所在目标文件组的文件中&#xff0c;文件组可以按你要求的方式来控制对象的物理位置。每个数据库有一个主文件…

html文件上传限制类型,html input file accept 上传文件类型限制格式 MIME 类型列表

单点登录改进版-使用ajax分发cookie避免重定向轮询前言 继上一篇博文:可跨域的单点登录(SSO)实现方案[附.net代码]虽然实现了单点登录,也存在很多不合理的地方.很多热心的朋友也给出了很多指导性的意见,特别是 LoveCoder提出的意见. 在很 ...Hello Java用记事本或者Eclipse编写…

jvm配置参数,查看大对象直接分配到老年代

看下如下代码&#xff1a; 配置参数 -Xms60m -Xms60m -XX:NewRatio2 -XX:SurvivorRatio8 -XX:PrintGCDetails 运行后看下如下&#xff0c;可以看到ParOldGen老年代&#xff0c;为used 20480K&#xff0c;也就20M&#xff0c;说明大对象直接分配到老年代 总结&#xff1a;

win10引导安卓x86_GPDwin安装安卓x86折腾记

接着之前的http://www.gcfan.cn/archives/3685说。王者荣耀下载下来问题依旧&#xff0c;我就在网上搜索答案。这里必须要感谢一下豆友“放不下的是筷子”&#xff0c;我搜索解决方案的时候发现了他的帖子&#xff0c;就跟帖问了他一下&#xff0c;结果他回复了我不少问题&…

DB Stack Overflow

Whats wrong with nullable columns in composite primary keys? 转载于:https://www.cnblogs.com/drizzlewithwind/p/5853091.html

电脑组装笔记:手把手教你如何自己组装电脑

目录 第一步&#xff1a;安装CPU 第二步&#xff1a;安装内存条 第三步&#xff1a;CPU风扇安装 第四步&#xff1a;电源安装 第五步&#xff1a;主板装入机箱 第六步&#xff1a;硬盘、固态硬盘、光驱的安装 第七步&#xff1a;线路连接 第八步&#xff1a;显示器的连接 第九步…

Amoeba for MySQL

Amoeba for MySQL Amoeba for MySQL致力于MySQL的分布式数据库前端代理层&#xff0c;它主要在应用层访问MySQL的时候充当query 路由功能&#xff0c;专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、Query过滤、读写分…

jquery 过滤html代码,jquery – 如何使指令使用过滤的HTML属性?

您可以使用ng-attr,这将是更方便的解决方案. ng-attr-data-title将评估插值{{}}&使用值创建data-title属性.而不是使用data-title “{{‘我的字符串’| myfilter}}”使用ng-attr-data-title “{{‘我的字符串’| myfilter}}”标记...更新因为你得到的价值就像{{‘我的字符串…