一个根据设定完成流水线工作的exe程序

比如说:自动打开王者荣耀选择人机模式,然后对战,最后结束游戏。起初我的想法是不断打人机赚金币,结果发现挂机都比程序打的赚的金币多,所有进入游戏一开始是程序操作的,最后是挂机模式,由AI去完成整个游戏,结束游戏后继续匹配。
请先看视频

python | 第3集 实现自动进入王者荣耀人机模式,不断进行游戏,完成赚取金币的任务

本场游戏中会从头到尾检查游戏是不是已完成状态,并且无论成功或者失败都会记录当前屏幕。

失败的截图

成功的截图

注意:必须是自己截图,截图当然都是自己电脑像素,我代码中截的图你可能用不了

大体思路还是我们常规的思维,人是怎么操作的,鼠标就是怎么操作的。
重点就是:观察自己定的流程会不会被其他乱七八糟的东西干扰了,这时候就需要枚举出所有的场景,但凡你碰到过得就需要记录下来,并且开启另外一个线程,干掉和主线无感的画面。

import datetime
import threading
import time
import PyQt5.uic.pyuicimport lackey
import pywinauto
from PIL import ImageGrabdef close_x():while True:try_lock_and_click(r'./photo/close_x.png', message='执行关闭操作中...')def get_info(message):return message + str(datetime.datetime.now()).replace(' ', '').replace('.', '').replace(':', '').replace('-', '')# 尝试锁定并点击 Try locking and clicking
def try_lock_and_click(png_path='', message='', button='left'):time_out = 120while time_out > 0:msg = get_info(message)try:screen = lackey.Screen()match = screen.findBest(pattern=lackey.Pattern(png_path))if button in 'left':screen.click(match)if button in 'right':screen.rightClick(match)print('锁定[' + message + ']成功!' + ' 请查看图片[' + './photo/success_png/' + msg + '.png]')ImageGrab.grab().save('./photo/success_png/' + msg + '.png')time.sleep(2)return Trueexcept Exception as e:print('锁定[' + message + str(time_out) + ']失败,请查看图片[' + './photo/fail_png/' + msg + '.png]')ImageGrab.grab().save('./photo/fail_png/' + msg + '.png')time.sleep(1)time_out -= 1if time_out == 0:print('锁定超时,退出锁定...')exit(0)def try_lock_and_click_close(png_path='', message=''):msg = get_info(message)try:screen = lackey.Screen()match = screen.findAll(pattern=lackey.Pattern(png_path))screen.click(match)print('锁定[' + message + ']成功!' + ' 请查看图片[' + './photo/success_png/' + msg + '.png]')ImageGrab.grab().save('./photo/success_png/' + msg + '.png')try_lock_and_click_close(png_path, message)except Exception as e:print('锁定[' + message + ']失败,请查看图片[' + './photo/fail_png/' + msg + '.png]')ImageGrab.grab().save('./photo/fail_png/' + msg + '.png')def run(exe_path=''):# 打开指定应用(夜神)pywinauto.Application(backend='win32').start(cmd_line=exe_path)# 锁定王者荣耀try_lock_and_click(r'./photo/wangzherongyao.png', message='王者荣耀')# 开始游戏try_lock_and_click(r'./photo/start_game.png', message='开始游戏')# 锁定 对战try_lock_and_click(r'./photo/battle.png', message='对战')# 锁定 5v5try_lock_and_click(r'./photo/arena.png', message='5v5 王者峡谷')# 锁定 人机try_lock_and_click(r'./photo/ai_mode.png', message='人机 AI MODE')# 锁定 倔强青铜IIItry_lock_and_click(r'./photo/qingtong_III.png', message='倔强青铜 III')# 锁定 锁定开始练习try_lock_and_click(r'./photo/start_practice.png', message='开始练习')for map_count in range(2):print('开始第' + str(map_count) + '次对战')# 锁定 开始匹配try_lock_and_click(r'./photo/start_map.png', message='开始匹配')# 锁定 确认进入游戏try_lock_and_click(r'./photo/ok_income_game.png', message='确认')# 锁定 点击右三角try_lock_and_click(r'./photo/right_sanjiao.png', message='三角符号')# # 锁定 选择刺客# try_lock_and_click(r'./photo/tanke.png', message='刺客')## 锁定 选择坦克try_lock_and_click(r'./photo/tanke.png', message='坦克')# 锁定 选择亚瑟try_lock_and_click(r'./photo/yase.png', message='亚瑟')# 锁定 确认选择百里玄策try_lock_and_click(r'./photo/ok_choose_hero.png', message='确认选择')# 锁定 完全确认 不需要等待try_lock_and_click(r'./photo/ok_choose_hero.png', message='确认开始游戏')# 检查是不是已经进入到游戏当中is_income = try_lock_and_click(r'./photo/is_income_game.png', message='检查是否进入游戏')if not is_income:print('没有进入游戏,无法进行下一步操作!')return# AI操作 每过一分钟检查一下对局是否完成while True:is_continue = try_lock_and_click(r'./photo/is_continue.png', message='检查当前游戏是否已完成对局')if is_continue:breaktime.sleep(60)# 点击继续#try_lock_and_click(r'./photo/is_continue.png', message='点击继续')# 点击返回房间try_lock_and_click(r'./photo/go_back_home.png', message='点击返回房间')if __name__ == '__main__':# 开启一个线程用来点Xthreading.Thread(target=close_x).start()run(exe_path=r'D:\Program Files\Nox\bin\Nox.exe')

python | lackey库实践 |自动化exe程序,完成王者荣耀人机模式获取金币相关推荐

  1. 程序人生 - 王者荣耀战队荣誉勋章获取途径

    战队荣誉勋章是一个获取途径比较隐蔽的货币,很多召唤师在战队活跃宝箱中也找不到这种奖励.那么战队荣誉勋章在哪里可以获取呢?今日就为大家介绍战队荣誉勋章的获得方法,快来了解一番吧~ 途径一.战队赛宝箱 分 ...

  2. python | 自动化exe程序

    自动化exe程序 简单介绍一下,这个exe原本是为闲鱼发布内容点击增加浏览量量身定做的. 应用程序路径:指的是你要打开的exe程序,例如夜神 图片文件路径:指的是自动化程序,要根据那个文件夹下的内容去 ...

  3. 独家 | 用Python Featuretools库实现自动化特征工程(附链接)

    作者:Prateek Joshi 翻译:张玲 校对:李润嘉 本文约4000字,建议阅读10分钟. 本文简要介绍特征工程的基本组成部分,并用直观的示例理解它们,最后给出使用Python Featuret ...

  4. python rpa库_Automagica python RPA库实践

    安装 # 需要python版本为3.7,系统为Win10 pip install https://github.com/OakwoodAI/automagica/tarball/master 功能使用 ...

  5. 微信小程序:王者荣耀改名神器

    这是一款王者改名小程序 支持重复名改名 支持空白名改名 另外也支持特殊符合随机生成改名等等 该款小程序引流裂变的效果非常的好 支持流量主收益如激励视频获取改名次数等等 另外该小程序还有更多,支持推荐其 ...

  6. 微信小程序:王者荣耀出装与铭文推荐助手

    这是一款王者荣耀助手的一款小程序源码 该小程序主要功能就是提供各个英雄出装和铭文查询 功能虽然单调但是对于玩王者的朋友来说还是挺实用的! 目前该小程序源码已支持多种流量主模式 小程序源码下载地址: 微 ...

  7. 微信小程序:王者荣耀战力查询微信小程序源码下载支持安卓苹果微信QQ等多区查询

    这是一款战力查询的微信小程序源码 源码内自带了接口 目前支持了微信,QQ,苹果,安卓全区都可以查询 支持流量主收益,而且搭建安装简单 使用微信开发者工具打开源码然后设置一下合法域名上传审核即可 该小程 ...

  8. 微信小程序:王者荣耀改重复名,空白名最低战力查询助手

    这是一款由重复名,空白名.和各区战力查询组合的一款微信小程序源码! 重复名支持一键生成几十个,就再也不怕都被别人用过了! 空白名支持多种空白名,王者荣耀空白名,贵族居中空白名,QQ微信专属空白名 战力 ...

  9. Python+Selenium 网页自动化 exe 程序编程实现(最全避坑指南)

    前言 在我的日常工作中,经常需要在内网(不连接互联网)的网页版办公系统中进行抓取网页数据.修改表单等大量重复性的操作.我就想是否可以编写出自动化的工具,将这些日常琐碎的操作变得轻松而高效.虽然本人非计 ...

最新文章

  1. django_rest_framework之GenericAPIView(三)
  2. 【操作系统】系统引导
  3. TensorFlow第十步CNN BP 编程求解
  4. DBA的宿命(困兽之斗)
  5. CDNDrive 第一个版本发布 布客新知第二次备份完成
  6. linux mint关于web开发的相关环境配置
  7. win pe备份linux,Windows10操作系统如何使用微PE实现备份与恢复
  8. 2021南航计算机专硕上岸经验贴
  9. html - html5 audio 音乐自动播放,循环播放等9款播放器
  10. 网站实现支付宝第三方登陆详解
  11. Win7下装centos7
  12. in作为介词的用法_介词in重要用法归纳
  13. 三星带着Bixby搅局中国市场,还说自己是「一家AI技术公司」
  14. 计算机专业cad 办公 ps,厦门集美办公、商务办公、CAD、PS、平面设计培训
  15. ACM:搜索算法专题(1)——24点
  16. 网络原理TCP/UDP
  17. 什么是数据清洗?数据清洗的原理是什么?
  18. java.net.url 兼容_java.net.Url类的应用(网络编程)
  19. Navicat Premium 使用技巧
  20. 极智嘉拟科创板上市后再创发展里程:全球AMR销售突破2万台

热门文章

  1. golang基础之RPC的客户端和服务端
  2. B站高管解读财报:增长仍是最重要工作 2023年要实现4亿MAU
  3. maven仓库jar包存在,pom报错问题
  4. C#基础 foreach 遍历二维数组
  5. 2022年蓝牙耳机哪款好?公认音质最好的蓝牙耳机
  6. 搭建:直播软件环境搭建(FFmpeg+nginx+rtmp+vlc)
  7. 云计算ACP云服务器ECS实例题库(二)
  8. CSS 多行文字溢出显示省略号效果
  9. eclipse添加桌面快捷方式
  10. 离线数仓——(新增用户业务指标,每日新增用户明细表,留存用户业务指标,用户留存明细表)