# -*- 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))
游戏自动化脚本_改良版_03auto_fight.py
于 2024-01-18 10:39:45 首次发布