【脚本玩漆黑的魅影】全自动对战宫殿

文章目录

  • 原理
  • 主要代码
  • 全部代码

在这里插入图片描述

原理

对战宫殿是让宠物自己打,不需要我们选技能,所以用来刷对战点数很合适。
需要准备三个主力。

主要是根据屏幕截图进行各种操作。

1,外面的对话,除了选自由级以外,其他都是直接点A键。
所以要判断一下【自由级这三个字的区域】。

elif is_same_img(img, data_waimian):  # 外面自由级press2(DOWN)press(A)

在这里插入图片描述

没有这三个字的时候,判断【右上角那个告示栏】。

elif is_same_img(img, data_waimian_2):  # 外面其他press(A)

在这里插入图片描述
2,报名的时候选择参战的宠物。判断【可用】两个字。

elif is_same_img(img, data_xuan_ren):c.release(ACCELERATE)press(A)press(A)press(DOWN)press(A)press(A)press(DOWN)press(A)press(A)press(A)c.press(ACCELERATE)

在这里插入图片描述

3,战斗前的废话,下一场前的废话,随便找一块就行。

if is_same_img(img, data_xiuxi) or is_same_img(img, data_xiuxi_2):  # 休息时候的废话press(A)

在这里插入图片描述
在这里插入图片描述
4,战斗中的废话,在右下角找一个绿色的像素点就行。

elif img.getpixel(data_feihua[0]) == data_feihua[1]:  # 战斗废话press(A)

在这里插入图片描述
5,战斗。就判断【战斗】那几个字。

elif is_same_img(img, data_zhandou):  # 自动战斗press(A)

在这里插入图片描述
6,换人。判断【下面那行字】

elif is_same_img(img, data_huan_ren):press2(DOWN)press(A)press(A)press(A)press(B)

在这里插入图片描述

主要代码

	img = ImageGrab.grab()if is_same_img(img, data_xiuxi) or is_same_img(img, data_xiuxi_2):  # 休息时候的废话press(A)elif img.getpixel(data_feihua[0]) == data_feihua[1]:  # 战斗废话press(A)elif is_same_img(img, data_zhandou):  # 自动战斗press(A)elif is_same_img(img, data_waimian):  # 外面自由级press2(DOWN)press(A)elif is_same_img(img, data_waimian_2):  # 外面其他press(A)elif is_same_img(img, data_xuan_ren):c.release(ACCELERATE)press(A)press(A)press(DOWN)press(A)press(A)press(DOWN)press(A)press(A)press(A)c.press(ACCELERATE)elif is_same_img(img, data_huan_ren):press2(DOWN)press(A)press(A)press(A)press(B)

全部代码

main.py

from PIL import ImageGrabfrom cai_yang import is_same_img
from core import *
# 脚本核心
def a1():global state_can_attackimg = ImageGrab.grab()if is_same_img(img, data_xiuxi) or is_same_img(img, data_xiuxi_2):  # 休息时候的废话press(A)elif img.getpixel(data_feihua[0]) == data_feihua[1]:  # 战斗废话press(A)elif is_same_img(img, data_zhandou):  # 自动战斗press(A)elif is_same_img(img, data_waimian):  # 外面自由级press2(DOWN)press(A)elif is_same_img(img, data_waimian_2):  # 外面其他press(A)elif is_same_img(img, data_xuan_ren):c.release(ACCELERATE)press(A)press(A)press(DOWN)press(A)press(A)press(DOWN)press(A)press(A)press(A)c.press(ACCELERATE)elif is_same_img(img, data_huan_ren):press2(DOWN)press(A)press(A)press(A)press(B)
if __name__ == '__main__':# 键盘事件处理def a0(key):if key == kb.Key.f12:global state12state12 = not state12print(f"自动练级:{state12}")# 模拟器加速if state12:c.press(ACCELERATE)else:c.release(ACCELERATE)# 开关state12 = False# 是否能够战斗state_can_attack = True# 监听键盘with kb.Listener(on_press=a0):while True:if state12:a1()

core.py

import timefrom pynput import keyboard as kbfrom settings import *
c = kb.Controller()
def press(key, interval=0.2, interval2=0.1):  # 按一下c.press(key)time.sleep(interval)c.release(key)time.sleep(interval2)
def press2(key):  # 走一步c.release(ACCELERATE)press(key, interval2=1)c.press(ACCELERATE)

cai_yang.py

from PIL import Imageimport random
# 获得采样数据
def cai_yang(target: Image, rec: (int, int, int, int), count):result = []i = 1while i <= count:# 随机XYx, y = random.randint(rec[0], rec[2]), random.randint(rec[1], rec[3])result.append(((x, y), target.getpixel((x, y))))i = i + 1return result
# 获得对比结果
def is_same_img(img: Image, data):for i in data:if img.getpixel(i[0]) != i[1]:return Falsereturn True

settings.py

from PIL import Imagefrom cai_yang import cai_yang
# 图片采样数据
data_xiuxi = cai_yang(Image.open("休息.png"), (753, 478, 1133, 642), 12)
data_xiuxi_2 = cai_yang(Image.open("休息2.png"), (753, 478, 1133, 642), 12)
data_zhandou = cai_yang(Image.open("战斗.png"), (1513, 817, 1792, 916), 12)
data_feihua = ((1525, 820), (72, 152, 120))
data_waimian = cai_yang(Image.open("外面.png"), (1147, 382, 1535, 705), 12)
data_waimian_2 = cai_yang(Image.open("外面.png"), (1508, 205, 1590, 274), 12)
data_xuan_ren = cai_yang(Image.open("选人.png"), (155, 398, 369, 477), 12)
data_huan_ren = cai_yang(Image.open("换人.png"), (53, 917, 805, 1027), 12)
# 键位设置
UP = "w"
DOWN = "s"
LEFT = "a"
RIGHT = "d"
ACCELERATE = "u"
A = "j"
B = "k"

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

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

相关文章

Exception异常处理

1. 两种异常处理机制 1.1 使用 throw 关键字手动抛出异常 使用throw关键字抛出异常&#xff0c;代码会的显得简单明了 如下图所示 1.2 使用 try-catch 捕获异常 使用try-catch进行捕获异常&#xff0c;往往会使代码变得更加笼统&#xff0c;层层包裹 如下图所示 2. 自定义…

mybatisplus的条件构造器

条件构造器wrapper&#xff0c;主要用于构造sql语句的where条件&#xff0c;他更擅长这个&#xff0c;但也可以用于构造其他类型的条件&#xff0c;比如order by、group by等。 条件构造器的使用经验&#xff1a; 基于QueryWrapper的查询 练习1. void testQueryWrapper(){Q…

吴恩达机器学习笔记 十八 制定一个性能评估标准 学习曲线 高偏差 高方差

一个模型的好坏的评估基准可以从下面几个方面考虑&#xff1a; 1.考虑人类在这个问题上的表现 2.对比竞争算法的表现 3.根据经验猜测 判断是高偏差还是高方差 训练样本数量越多&#xff0c;越难完美地拟合每个样本&#xff0c;因此 J_train 会逐渐增大一点点&#xff0c;但泛…

算法——滑动窗口之找到字符串中所有的字母异位词,串联所有单词的子串

6.找到字符串中所有的字母异位词 题目:. - 力扣&#xff08;LeetCode&#xff09; 6.1如何快速判断两个字符串是否是异位词 假设现在有s1 aabca,s2 abaca,那么这两个就是异位词,容易想到的判断方法就是将两个字符串按照字典序排序,再依次比较,但是时间复杂度很高;我们看看…

分享软件项目实施方案模板

本项目在实施过程中将遵守做到以下几个方面&#xff1a; 与建设单位共同完成整个系统软件、网络等设计,负责系统的开发、测试、调试、人员培训、系统的试运行和交付&#xff0c;并保证系统质量。负责系统的维护、应用软件的升级和更新。提出对系统硬件设备的相关技术要求。在项…

vue3 动态路由及使用动态路由后刷新界面出现空白页或者404

最近编写vue3动态路由的功能遇到了一些问题&#xff0c;处理好了&#xff0c;总结出来&#xff0c;希望能帮助到你。正片开始 先写好本地缓存菜单的方法&#xff08;存储、删除、获取&#xff09; // utils/menu.jsconst getMenuList () > {return JSON.parse(localStorag…

MachineSink - 优化阅读笔记

注&#xff1a;该优化与全局子表达式消除刚好是相反的过程&#xff0c;具体该不该做这个优化得看代价模型算出来的结果(有采样文件指导算得会更准确) 该优化过程将指令移动到后继基本块中&#xff0c;以便它们不会在不需要其结果的路径上执行。 该优化过程并非旨在替代或完全…

【大厂AI课学习笔记NO.80】深度学习行业人才能力图谱

深度学习领域的就业岗位及所需关键技术、工具、能力分析 深度学习作为人工智能领域的一个重要分支&#xff0c;近年来得到了飞速的发展。随着技术的不断进步和应用场景的不断拓展&#xff0c;深度学习领域的就业岗位也日益增多。本文将从领军人才、产业研发人才、应用开发人才…

Linux——信号

目录 什么是信号 Linux下的信号 信号的记录 信号处理的常见方式 产生信号 使用组合键产生信号&#xff08;包含core dump&#xff09; 使用系统调用向进程发送信号 由软件条件产生信号 由硬件异常产生信号 阻塞信号 内核表示 sigset_t 信号集操作函数 sigpendin…

jvm八股

文章目录 运行时数据区域Java堆对象创建对象的内存布局对象的访问定位句柄直接指针 GC判断对象是否已死引用计数算法可达性分析算法 引用的类别垃圾收集算法分代收集理论标记清除算法标记复制算法标记整理算法 实现细节并发的可达性分析 垃圾收集器serial收集器ParNew收集器Par…

如何保证 redis 的高并发和高可用?redis 的主从复制原理能介绍一下么?redis 的哨兵原理能介绍一下么?

目录 一、面试官心理分析 二、面试题剖析 1.Redis 主从架构 2.Redis replication 的核心机制 3.Redis 主从复制的核心原理 4.主从复制的断点续传 5.无磁盘化复制 6.过期 key 处理 7.复制的完整流程 8.全量复制 9.增量复制 10.heartbeat 11.异步复制 12.Redis 如何…

【三十】springboot项目上高并发解决示例

互相交流入口地址 整体目录&#xff1a; 【一】springboot整合swagger 【二】springboot整合自定义swagger 【三】springboot整合token 【四】springboot整合mybatis-plus 【五】springboot整合mybatis-plus 【六】springboot整合redis 【七】springboot整合AOP实现日志操作 【…

Java学习记录(十六):IO流(三)

缓冲流 缓冲流是一种高级流&#xff0c;可以理解为将基本流包装成了这种高级流&#xff0c;而这种高级流的特点就是将一个缓冲区放入到基本流当中&#xff0c;从而提高基本流的效率&#xff0c;但实际进行读写操作的还是基本流 下面为缓冲字节输出流和缓冲字节输入流的应用&am…

基于SpringBoot疫情打卡健康评测系统

基于SpringBoot疫情打卡健康评测系统~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 学生端功能效果展示 试卷表 在线考试 打卡管理 居家管理 学生返校申请管理 管理…

救命!我终于会写一份简单的产品说明书了

写一份简单的说明书其实也不简单&#xff0c;需要有前期的调研准备&#xff0c;撰写时的条框梳理&#xff0c;收尾的清晰明了。网络上有很多撰写产品说明书的方法&#xff0c;却也有一些模糊的地方&#xff0c;下面就来看看LookLook同学是怎么完成一份简单的产品说明书的。 一、…

【Python】一文详细介绍plt.rcParams 在 Matplotlib 中的原理、作用、注意事项

【Python】一文详细介绍plt.rcParams 在 Matplotlib 中的原理、作用、注意事项 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x…

c++ primer plus 笔记 第十六章 string类和标准模板库

string类 string自动调整大小的功能&#xff1a; string字符串是怎么占用内存空间的&#xff1f; 前景&#xff1a; 如果只给string字符串分配string字符串大小的空间&#xff0c;当一个string字符串附加到另一个string字符串上&#xff0c;这个string字符串是以占用…

css 用flex做成田字型

哈喽&#xff0c;各位小伙伴&#xff01;今天给大家来css控制div完成田字型样式&#xff0c;来&#xff0c;看看下面的效果图&#xff1a; 一看就知道你们想要代码了&#xff0c;不急。代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head>&…

JAVA全面基础知识(第七部分)

大家好我是程序员阿存&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款&#xff0c;项目源码以及部署相关请联系存哥&#xff0c;文末附上联系信息 。 这篇文章给大家分享的是JAVA的基础知识&#xff0c; &#x1f495;&#x1f495;作者&#xff1a;程序员阿存 &…

哪里下载短视频素材?推荐几个短视频素材下载网站

当短视频行业的迅速崛起&#xff0c;剪辑影视短片的魅力无法抗拒&#xff0c;越来越多朋友爱看短视频&#xff0c;但从哪里找到高清、无水印和无字幕的短视频素材呢&#xff1f;今天&#xff0c;我将为大家推荐几个可获取短视频素材的优秀网站&#xff0c;下面让我们一起去看看…