我想创建一个脚本来自动点击游戏中的移动目标。
要做到这一点,我想检查屏幕上的颜色以确定我的目标在哪里然后点击他,如果他移动则重复这个。
我不擅长编程,可能会有一个更容易解决我的建议:
1 /将屏幕分割成相等的图块 - 图块的大小应代表游戏对象。
2 /遍历每个图块的每个像素,并创建像素颜色的直方图。
3 /如果最常见的记录颜色符合我们的需要,我们可能会有正确的图块。保存坐标并单击对象以完成任务
4 /每0.5秒检查颜色以确定对象是否已移动,如果没有,请继续单击,如果它已重复步骤1,2和3。
我不确定如何在技术上做的步骤是步骤1.我需要什么样的数据结构? 2D阵列会满足吗?将每种颜色的值存储在此数组中,然后确定它是否是对象。同样在伪,我如何将屏幕分割成要搜索的图块?瓷砖问题是我的主要问题。
为rayryeng 2编辑:
我将使用Python完成此任务。这不是我的游戏,我只想创建一个宏来自动为我在游戏中执行任务。我还没有代码,我正在寻找更多关于实现这项工作的想法而不是实际代码。
第3次编辑和最终代码:
#!/usr/bin/python
import win32gui, win32api
#function to take in coords and return colour
def colour_return(x,y):
colours = win32gui.GetPixel(win32gui.GetDC(win32gui.GetActiveWindow()), x,y)
return colours
def click(x,y):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
#variable declaration
x = 1
y = 1
pixel_value = []
colour_found = 0
while x < 1600:
pixel_value = colour_return(x,y)
if pixel_value == 1844766:
click(x,y)
x=x+1
#print x
print y
if x == 1600:
y=y+1
x=1
#print tile
pixel_value = 0
这是我制作的最终代码。它有效,但速度非常慢。搜索y = 1的所有1600个像素需要30秒。我想这是我的方法不起作用。我现在只是搜索颜色并在匹配时单击坐标,而不是使用直方图和图块。在整个屏幕上搜索某种颜色时使用的最快方法是什么?我已经看到了颜色检测机器人能够用移动的角色保持每一秒。