由于xx西游没办法自动挖图,于是懒狗的我只能自己写一段脚本来实现挖土自由。
首先介绍几个比较重要的库都需要自行install。
from PIL import Image #用于计算图片大小的库
import pyautogui #用于抓取目标位置的库
import pygetwindow as gw #用于得到窗口大小的库
import time #计时器
接下来先设置操作时间
# 设置操作持续的时间(例如300秒,即5分钟)
duration = 300
start_time = time.time()# 获取开始时间
end_time = start_time + duration# 获取结束时间
然后按照比例对目标图片进行缩放,不然找不到!!
#获得游戏的窗口大小
notepad = gw.getWindowsWithTitle('xx西游')[0]
print(f"窗口位置和大小: {notepad.left}, {notepad.top}, {notepad.width}, {notepad.height}")
### 得到pic原图所需要的缩放大小
picScale_x = notepad.width/1722
picScale_y = notepad.height/999
print(f"缩放大小: {picScale_x}, {picScale_y}")
### 加载原始图像
pic_image = Image.open(r"E:\footbook\pic_test1.png") #放自己的地址
# 调整图像大小
new_size = (int(pic_image.width * picScale_x), int(pic_image.height * picScale_y))
resized_image = pic_image.resize(new_size, Image.ANTIALIAS)
resized_image.save('E:\\footbook\\pic_test2.png')
找目标并点击。
# 持续尝试匹配,直到时间结束
while time.time() < end_time:
try:
# 使用调整后的图像进行匹配
match = pyautogui.locateOnScreen('E:\\footbook\\pic_test2.png', confidence=0.7)
if match:
print(f"找到一个匹配位置:{match}")
random_x = 2 * random.random() - 1
random_y = 2 * random.random() - 1
print(f"随机数为:{random_x}, {random_y}")
clickPos_x = match.left + match.width/(2) + random_x * 30
clickPos_y = match.top + match.height*(4/5) + random_y * 10
print("x = ", clickPos_x, "y = ", clickPos_y)
pyautogui.click(clickPos_x, clickPos_y, button='left') # 单击左键
time.sleep(5) # 在尝试之间等待2秒
except Exception as e:
print(f"没找到图片")
time.sleep(5) # 如果遇到错误,等待2秒后再次尝试
print("程序结束")
以上代码从头下到脚就能编译了,未来目标是实现一条
标签:pic,python,random,notepad,Day1,opencv,time,print,match From: https://blog.csdn.net/qq_52933098/article/details/139726787