按键精灵 没有坐标的自动寻路实现代码
时间: 2024-03-04 09:49:01 浏览: 244
按键精灵的自动寻路需要使用图像识别技术,通过识别游戏界面中的特定元素,来确定当前人物所处的位置和行进方向。以下是一个基于按键精灵和Python的自动寻路代码示例:
```python
import time
import random
import win32api, win32con
import pyautogui
# 定义图片路径和坐标
map_img = 'map.png'
start_img = 'start.png'
end_img = 'end.png'
path_img = 'path.png'
map_pos = (0, 0)
start_pos = None
end_pos = None
path_pos = []
# 图像识别函数
def find_image(img, pos, region=None):
if region is None:
region = (0, 0, pyautogui.size()[0], pyautogui.size()[1])
try:
x, y = pyautogui.locateCenterOnScreen(img, region=region)
return (x + pos[0], y + pos[1])
except:
return None
# 开始寻路
while True:
# 查找地图和起点
map_pos = find_image(map_img, (0, 0))
start_pos = find_image(start_img, map_pos)
# 如果找到了起点
if start_pos:
# 查找终点
end_pos = find_image(end_img, map_pos)
# 如果找到了终点
if end_pos:
# 查找路径
path_pos = pyautogui.locateAllOnScreen(path_img, region=(map_pos[0], map_pos[1], pyautogui.size()[0], pyautogui.size()[1]))
# 依次走过路径上的所有点
for pos in path_pos:
x, y = pos.left + 5, pos.top + 5
win32api.SetCursorPos((x, y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, x, y, 0, 0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, x, y, 0, 0)
time.sleep(random.uniform(0.1, 0.3))
# 路径走完后重新开始寻路
continue
# 如果没有找到起点或终点,随机等待一段时间后再次尝试寻路
time.sleep(random.uniform(0.5, 1.5))
```
这段代码中,`find_image`函数可以在屏幕上查找指定的图像,并返回其坐标。在主循环中,首先查找地图和起点,如果找到了起点,则继续查找终点和路径。如果找到了路径,则依次走过路径上的所有点,每次移动后随机等待一段时间,以模拟真实的人物行进速度。当路径走完后,重新开始寻路。如果没有找到起点或终点,则随机等待一段时间后再次尝试寻路。
阅读全文