【脚本玩漆黑】橙华市全自动练级

文章目录

  • 前言
  • 项目结构
  • 故事后续

前言

选完预三家,作者来到了橙华市。

众所周知啊,打架输了要掏一半的家产,所以宝可梦世界非常的危险。
为了安全考虑,作者打算在这里升个级。

在这里插入图片描述

项目结构

在这里插入图片描述
1,安装库。

pip install pynput
pip install pillow

2,base目录是一些通用的代码。

采样工具类。cai_yang.py

from PIL import Image
import random
# 目标图片
# 目标区域,左上XY右下XY,画图里面可以看到坐标
# 样本数量
def cai_yang(target: Image, rec: (int, int, int, int), count):
	result = []
	i = 1
	while i <= count:
		# 随机XY
		x, y = random.randint(rec[0], rec[2]), random.randint(rec[1], rec[3])
		result.append(((x, y), target.getpixel((x, y))))
		i = i + 1
	return result
# 对比
def is_same_img(img: Image, data):
	for i in data:
		if img.getpixel(i[0]) != i[1]:
			return False
	return True
# 用法示例
if __name__ == '__main__':
	a = cai_yang(Image.open("a.png"), (1297, 262, 1488, 487), 8)
	print(is_same_img(Image.open("b.png"), a))

键位设置。key_setting.py

import time
from pynput import keyboard as kb
########################
# 键位设置
UP = "w"
DOWN = "s"
LEFT = "a"
RIGHT = "d"
A = "j"
B = "k"
ACCELERATE = "u"
########################
# 一些按键方法
c = kb.Controller()
def press(key, t1=0.2, t2=0.1):
	c.press(key)
	time.sleep(t1)
	c.release(key)
	time.sleep(t2)
def run(key, t1=0.2, t2=0.1):  # 主角跑步
	c.press(B)
	press(key, t1, t2)
	c.release(B)
def walk(key):  # 慢慢的走
	c.release(ACCELERATE)
	press(key, 0.2, 0.1)
	c.press(ACCELERATE)

脚本启动器。script.py

from pynput import keyboard as kb
class Simple_Script():
	def __init__(self, key, fun1=None, fun2=None):
		self.key = key
		self.state = False
		self.listener = kb.Listener(on_press=self.__a(fun1, fun2))
	def start(self):
		self.listener.start()
	def __a(self, fun1, fun2):
		def on_press(key):
			if key == self.key:
				self.state = not self.state
				if self.state:
					print("启动", end="")
					if fun1 != None:
						fun1()
				else:
					print("暂停", end="")
					if fun2 != None:
						fun2()
		return on_press

3,练级脚本。level.py

from PIL import ImageGrab

from base.cai_yang import *
from base.key_setting import *
from base.script import *
# 图片的采样数据
data_safe = cai_yang(Image.open("安全区.png"), (420, 335, 476, 384), 8)
data_pp = cai_yang(Image.open("没有PP.png"), (607, 827, 757, 914), 16)
# 战斗画面的关键像素点
pot_1 = ((1048, 490), (224, 192, 96))
if __name__ == '__main__':
	a = Simple_Script(kb.Key.f12, lambda: c.press(ACCELERATE), lambda: c.release(ACCELERATE))
	a.start()
	state_can_attack = False
	while True:
		if a.state:
			if is_same_img(ImageGrab.grab(), data_safe):
				if state_can_attack:  # 去草丛
					run(RIGHT)
				else:  # 去治疗
					walk(DOWN)
					[walk(LEFT) for i in [1, 2, 3, 4]]
					run(UP, 0.3)
					[press(A) for i in [1, 2, 3, 4]]
					[press(B) for i in [1, 2, 3, 4]]
					run(DOWN, 0.3)
					run(RIGHT, 0.3)
					walk(LEFT)
					run(UP)
					state_can_attack = True
			elif ImageGrab.grab().getpixel(pot_1[0]) == pot_1[1]:
				if is_same_img(ImageGrab.grab(), data_pp):
					state_can_attack = False
				if state_can_attack:  # 攻击
					press(A)
				else:  # 逃跑
					[press(B) for i in [1, 2, 3, 4]]
					press(DOWN)
					press(RIGHT)
					press(A)
					[press(B) for i in [1, 2, 3, 4]]
			else:  # 回安全区
				run(LEFT)

4,需要的素材。
安全区的全屏截图。图中主角站的地方。范围可以选择精灵中心的标志。
PP不足的全屏截图。范围选PP两个字。
战斗画面的一个像素XY坐标和RGB颜色值。可以选择对面怪物的坐垫黄边。

故事后续

20级的猪。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java后端八股------消息中间件篇

自动确认没收到&#xff0c;实现重复消费问题&#xff0c;可以用业务唯一标识来确定业务是否被消费。 TTL也就是超时时间&#xff0c;一般去dead letter的时间为min(消息的ttl,queue的ttl)。 acksall设置是最安全的&#xff0c;但是效率太低了&#xff0c;实际的生…

「CISP题库精讲」CISP题库习题解析精讲20道

前言 本篇主要对CISP教材第九章《计算环境安全》的一些习题进行讲解&#xff0c;包括20道题&#xff0c;这里只是部分习题&#xff0c;针对第九章可能会多写几章的内容&#xff0c;如果我发布的这些习题里面没有你想找的那道题&#xff0c;你也可以直接私信我&#xff0c;我加…

【C++】string学习 — 手搓string类项目

手搓string项目 1 string类介绍2 功能描述3 代码实现3.0 基础框架3.1 构造函数 和 析构函数3.2 流操作符重载 和 尾插扩容3.4 运算符重载3.5 实用功能3.6 迭代器模拟 总结Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读&#xff01;&#xff01;&#xff01;下一篇…

jmeter压力测试指标解释

RT(response time) 什么是RT? RT就是指系统在接收到请求和做出相应这段时间跨度 但是值得一提的是RT的值越高,并不真的就能说明我们的系统的吞吐量就很高, 比如说,如果存在数据在网络中传输时出现了丢包的现象,传输的数据少了,速度就会增加, 但是这是事故,不是说我们的系统吞…

软件应用实例分享,茶楼计时收费管理系统软件,佳易王茶社吧台计时收费软件试用版教程

软件应用实例分享&#xff0c;茶楼计时收费管理系统软件&#xff0c;佳易王茶社吧台计时收费软件试用版教程 一、前言 以下软件操作教程以 佳易王茶室计时计费软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 【茶楼计时计费软件&…

【办公类-21-09】三级育婴师 视频转文字docx(等线小五单倍行距),批量改成“宋体小四、1.5倍行距、蓝色字体”

作品展示&#xff1a; 背景需求&#xff1a; 一、视频处理 1、育婴师培训的现场视频 2、下载视频&#xff0c;将视频换成考题名称 二、音频 视频用格式工厂转成MP3音频 3、转文字doc 把音频放入“网易云见外工作台”转换为“文字" 等待5分钟&#xff0c;音频文字会被写…

java操作HBase

创建一个学生信息表&#xff0c;用来存储学生的姓名&#xff08;姓名作为行键&#xff0c;且假设姓名不会重复&#xff09;以及考试成绩&#xff0c;其中考试成绩&#xff08;score&#xff09;是一个列族&#xff0c;存储了各个科目的考试成绩。然后向student中添加数据 1、HB…

Python元组(Tuple)深度解析!

目录 1. 什么是元组&#xff1f; 2. 创建元组 3.访问元组 4.元组的运算 5.修改元组不可行 6.元组的应用场景 前面的博客里&#xff0c;我们详细介绍了列表&#xff08;List&#xff09;这一种数据类型&#xff0c;现在我们来讲讲与列表相似的一种数据类型&#xff0c;元组…

【LeetCode: 380. O(1) 时间插入、删除和获取随机元素 + 数据结构设计】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

学习大数据,所需要Java基础(9)

文章目录 网络编程实现简答客户端和服务器端的交互编写客户端编写服务端 文件上传文件上传客户端以及服务器端实现文件上传服务器端实现&#xff08;多线程&#xff09;文件上传服务器端&#xff08;连接池版本&#xff09;关闭资源工具类 BS架构服务器案例案例分析BS结构服务器…

【C++】AVL树的插入、旋转

目录 一、AVL树介绍1.1 概念1.2 定义 二、AVL树的实现2.1 插入2.2 旋转2.2.1 左单旋2.2.2 右单旋2.2.3 左右双旋2.2.4 右左双旋 一、AVL树介绍 1.1 概念 AVL树是高度平衡的二叉搜索树&#xff0c;相比普通的二叉搜索树&#xff0c;它防止了变成单支树的情况。因为AVL树每插入…

bash: mysqldump: command not found

问题&#xff1a;在linux上执行mysql备份的时候&#xff0c;出现此异常 mysqldump命令找不到 解决&#xff1a; 1、找到mysql目录&#xff08;找到mysql可执行命令目录&#xff09; which mysql 有图可知&#xff0c;mysql安装在&#xff1a; /usr1/local/java/mysql 2、my…

redis 中的八大问题

前言 在分布式系统中&#xff0c;由于redis分布式锁相对于更简单和高效&#xff0c;成为了分布式锁的首先&#xff0c;被我们用到了很多实际业务场景当中。 但不是说用了redis分布式锁&#xff0c;就可以高枕无忧了&#xff0c;如果没有用好或者用对&#xff0c;也会引来一些意…

世界的本质是旋转(7) 野路子PSK 接收机上层同步的技巧与缺陷

上一篇文章里&#xff0c;我们以BPSK为例子&#xff0c;介绍了nPSK&#xff08;n2,4,8&#xff09;波形的接收、解调中的同步技术。 前文阐述的同步技术所工作的对象是复平面的坐标&#xff0c;X轴是实部、Y轴是虚部。当完成时钟、频率同步后&#xff0c;就获得了一串整数&…

sqlserver中将csv非空间数据(带点坐标)转为空间数据

1、导入csv数据 2、修改字段shape为空间字段 ALTER TABLE FJPOIHB66 ALTER COLUMN shape geometry;3、空间字段转字符串 UPDATE FJPOIHB66 SET shape geometry::STGeomFromText(CONVERT(nvarchar(254),shape), 4326);4、设置主键字段 5、即可

Instagram被封了?Ins封号的6个常见原因及防封技巧

现在&#xff0c;Instagram 对于跨境电商和社交媒体营销人员来说十分重要。然而&#xff0c;许多用户发现他们的Instagram刚注册就被封&#xff0c;大家要知道 Instagram 和 Facebook 等其他平台一样&#xff0c;对账户管理的管控机制非常严格&#xff0c;不过&#xff0c;Inst…

nut-ui组件库icon中使用阿里图标

1.需求 基本每个移动端组件库都有组件 icon组件 图标组件、 但是很多组件库中并找不到我们需要的图标 这时候 大家有可能会找图标库 最大众的就是iconfont的图标了 2.使用 有很多方式去使用这个东西 比如将再限链接中的css引入 在使用 直接下载图标 symbol 方式 等....…

【群环域】多项式环基础

目录 一. 多项式环的基本定义 二. 环与多项式环 三. 多项式环的性质 四. 多项式环的次数&#xff08;degree&#xff09; 五. 多变量多项式 六. 多变量多项式环R的同态 一. 多项式环的基本定义 令R代表环&#xff08;Ring&#xff09;&#xff0c;多项式环中x对应的系数…

【C语言】自定义类型:结构体

1. 结构体类型的声明 1.1 结构体回顾 结构是⼀些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.1.1 结构的声明 struct tag {member-list; }variable-list; 例如描述⼀个学⽣&#xff1a; struct Stu {char name[20];//名字int age;//年…

【C语言】strcpy函数的超细节详解(什么是strcpy,如何模拟实现strcpy?)

目录 一、观察strcpy()库函数的功能与实现 二、模仿实现strcpy()函数 &#x1f50d;优化代码 &#x1f50d;assert断言拦截 &#x1f50d;const修饰常量指针 &#x1f50d;返回值的加入 三、共勉 一、观察strcpy()库函数的功能与实现 首先我们先来观察一下库函数strcpy去实现…