游戏自动化脚本_改良版_03auto_fight.py

# -*- coding:utf-8 -*-

"""
游戏:微信小程序:动物大联盟,现在搜不到了,可以下载APP:taptap
地图:副本是7-3,怪物暂时只限制能刷前面几个。章鱼还刷不了(还没写)。
使用:直接打开7-3刷图,先暂停,再启用脚本。
人物:泰坦套装+红眼
注意:仅供交流和学习
版本:03auto_fight.py
时间: 2024/1/17 10:18
"""
import cv2
import pyautogui
import time
import random
import numpy as np


# 加载怪物和人物图像
monster_image = cv2.imread('monster.png')
man_image = cv2.imread('man.png')

# 设置游戏窗口的左上角和右下角坐标
game_window_top_left = (316, 136)
game_window_bottom_right = (1052, 594)

# 设置技能按钮的位置
skill_button_positions = {
    '1': (1015, 358),  # 技能1按钮的位置,觉醒
    '2': (758, 550),   # 技能2按钮的位置,大蹦
    '3': (923, 436),   # 技能3按钮的位置,崩山
    '4': (813, 546),   # 技能4按钮的位置,怒气
    '5': (862, 357),   # 技能5按钮的位置,血剑
    '6': (915, 360),   # 技能6按钮的位置,大吸
    '7': (986, 413),   # 技能7按钮的位置,抓手
    # ...
}

# 设置技能快捷键和冷却时间
skills = {
    '1': 45,  # 技能1的冷却时间为45秒
    '2': 32,  # 技能2的冷却时间为32秒
    '3': 5,  # 技能3的冷却时间为5秒
    '4': 15,  # 技能4的冷却时间为15秒
    '5': 18,  # 技能5的冷却时间为18秒
    '6': 23,  # 技能5的冷却时间为23秒
    '7': 9,  # 技能5的冷却时间为9秒
    # ...
}

for i in range(1):
    pyautogui.moveTo(1015, 358)
    pyautogui.click()
    time.sleep(2)

# 循环检测怪物位置并击杀
while True:
    # 截取游戏窗口图像
    screenshot = pyautogui.screenshot(region=(game_window_top_left[0], game_window_top_left[1],
                                              game_window_bottom_right[0] - game_window_top_left[0],
                                              game_window_bottom_right[1] - game_window_top_left[1]))
    screenshot = cv2.cvtColor(np.array(screenshot), cv2.COLOR_RGB2BGR)
    # 在游戏窗口图像中寻找怪物位置
    result = cv2.matchTemplate(screenshot, monster_image, cv2.TM_CCOEFF_NORMED)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)

    result1 = cv2.matchTemplate(screenshot, man_image, cv2.TM_CCOEFF_NORMED)
    min_val1, max_val1, min_loc1, max_loc1 = cv2.minMaxLoc(result1)
    # 如果找到怪物
    if max_val <= 0.4:
        print('没找到怪物!')
        pyautogui.moveTo(455, 496)  # 移动按钮的位置
        pyautogui.mouseDown()  # 按下鼠标左键
        # 移动鼠标到指定
        pyautogui.moveTo(665, 496)
        time.sleep(2)
        pyautogui.moveTo(536, 552)
        time.sleep(1)
        pyautogui.moveTo(523, 427)
        time.sleep(1)
        pyautogui.mouseUp()  # 释放鼠标左键

    else:
        # 思考:如何改变人物朝向问题?
        # 计算怪物的中心位置
        monster_center = (max_loc[0] + monster_image.shape[1] // 2, max_loc[1] + monster_image.shape[0] // 2)
        man_center = (max_loc1[0] + man_image.shape[1] // 2, max_loc1[1] + man_image.shape[0] // 2)

        # 移动鼠标到移动按钮位置
        pyautogui.moveTo(455, 496)  # 移动按钮的位置
        pyautogui.mouseDown()  # 按下鼠标左键
        # 移动鼠标到怪物位置
        # pyautogui.moveTo(game_window_top_left[0] + monster_center[0], game_window_top_left[1] + monster_center[1])
        if monster_center[0] < man_center[0]:
            # 怪物在人物左边,鼠标往左移
            pyautogui.moveTo(455 - 50, 496)
        else:
            # 怪物在人物右边,鼠标往右移
            pyautogui.moveTo(455 + 50, 496)
        pyautogui.mouseUp()  # 释放鼠标左键

        # 使用技能
        for skill, cooldown in skills.items():
            if cooldown == 0:
                # 使用技能
                pyautogui.moveTo(skill_button_positions[skill][0], skill_button_positions[skill][1])
                pyautogui.click()
                # 重置冷却时间
                skills[skill] = cooldown
            else:
                # 冷却时间减3
                skills[skill] -= 3

    # 随机等待一段时间,具体可调整。
    time.sleep(random.uniform(0.5, 1.5))

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值