使用Jupyter(python+opencv)实现很难的脚本-Day1

由于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("程序结束")

以上代码从头下到脚就能编译了,未来目标是实现一条🐉服务

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值