Java Robot类鼠标移动到特定像素的位置(鼠标单击一种颜色)

时间:2013-03-28 16:34:12

标签: java colors click position awtrobot

如何找到正在改变坐标的颜色的位置,并在识别后需要点击。

程序在游戏中完成任务的目的,要求点击不总是在同一位置的不同颜色。

代码当前在执行程序5秒后获得鼠标坐标的颜色


public class RobotColorClick 
{

    public RobotColorClick () throws AWTException, IOException, InterruptedException 
    {
        Robot robot = new Robot();

        //Delay 5 seconds
        robot.delay(5000);        

        //Gets color (value of red,green,blue) from the mouse position after 5 seconds 
        Color color = robot.getPixelColor( MouseInfo.getPointerInfo().getLocation().x 
                , MouseInfo.getPointerInfo().getLocation().y);

        //Delay 3 seconds
        robot.delay(3000);

        //Mouse moves to X and Y then right click
        //Problem! How to set X and Y to position color coordinates, position will change
        robot.mouseMove(x, y);
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK);

    }


    public static void main(String[] args) throws AWTException, IOException, 
                InterruptedException 
    {
        new RobotColorClick ();
    }
}

2 个答案:

答案 0 :(得分:1)

如果颜色正在沿行进并且不会在read Kevin Mangold answer周围跳跃,否则,如果它只是出现在任何地方的颜色,我认为您有2种选择(如果背景为恒定颜色):

第一个::您可以在屏幕快照上进行迭代,并获取任何出现的颜色(或特定颜色)的坐标,然后使用Robot lib this may help {{ 3}}

第二个::如果您不想截取屏幕截图,则可以使用机械手库在屏幕上进行迭代,并使用2个嵌套的for循环遍历所有屏幕像素and this for taking screenshots

如果 背景图像不是恒定的,则可以截取屏幕截图并将其与上一个屏幕截图进行比较,使用robot lib来压下差异。 / p>

其他在使用robot lib按下按钮之前,我已经读过某处内容,最好这样做 robot.mousePress(InputEvent.BUTTON1_MASK); robot.delay(1); robot.mouseRelease(InputEvent.BUTTON1_MASK); 代替此

robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);

其他内容,您可以从软件中读取游戏记忆并获取所需的颜色坐标

答案 1 :(得分:0)

你很可能需要拍摄一个屏幕截图,然后从原始位置螺旋输出(假设“颜色”是连续路径而不是跳跃),将该像素的颜色与您正在寻找的颜色进行比较对于。确定后,请执行mouseMove(newX, newY),然后执行mousePress() / mouseRelease()方法。