如何找到正在改变坐标的颜色的位置,并在识别后需要点击。
程序在游戏中完成任务的目的,要求点击不总是在同一位置的不同颜色。
代码当前在执行程序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 ();
}
}
答案 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()
方法。