颜色检测机器人

时间:2014-08-23 16:20:57

标签: image-processing macros pixel bots

我想创建一个脚本来自动点击游戏中的移动目标。

要做到这一点,我想检查屏幕上的颜色以确定我的目标在哪里然后点击他,如果他移动则重复这个。

我不擅长编程,可能会有一个更容易解决我的建议:

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秒。我想这是我的方法不起作用。我现在只是搜索颜色并在匹配时单击坐标,而不是使用直方图和图块。在整个屏幕上搜索某种颜色时使用的最快方法是什么?我已经看到了颜色检测机器人能够用移动的角色保持每一秒。

0 个答案:

没有答案
相关问题