具有范围的Java if语句

时间:2014-03-13 21:49:53

标签: java colors awtrobot

假设红色= 200,绿色= 190,蓝色= 210 然后鼠标在哪里

我的问题是红色,绿色和蓝色每次都会改变,但它们总是会彼此接近。红色= 230,蓝色= 250,绿色= 240

我想创建一个具有范围

的if语句
if (color.getRed()== 131 && color.getGreen() == 115 && color.getBlue() == 91)
{
robot.mousePress(MouseEvent.BUTTON1_MASK);
robot.mouseRelease(MouseEvent.BUTTON1_MASK);
System.out.println("click");
}

所以,如果红色的绿色和蓝色被20个点分开,它就会在括号中显示。

3 个答案:

答案 0 :(得分:1)

你可以为此创建一些帮助方法。

private boolean inColorRange(int color1, int color2) {
    return Math.abs(color2-color1) <= 10;
}

如果颜色相差10或更小,则返回true。

你可以改写你的if是这样的。

if (inColorRange(color.getRed(), color.getBlue()) && 
    inColorRange(color.getBlue(), color.getGreen()) {
    // Do something here if red and blue are within 10, and blue and
    // green are within 10
}

答案 1 :(得分:0)

你可以使用减法运算来获得差异,你可以使用Math.abs()来获得差异总是正值

答案 2 :(得分:0)

int delta = 20;

if(withinRange(color.getRed(), color.getGreen(), delta) &&
  withinRange(color.getRed(), color.getBlue(), delta) &&
  withinRange(color.getGreen(), color.getBlue(), delta)){
  robot.mousePress(MouseEvent.BUTTON1_MASK);
  robot.mouseRelease(MouseEvent.BUTTON1_MASK);
  System.out.println("click");
}


private boolean withinRange(int color1, int color2, int delta){
  return ((Math.abs((color1 - color2)) <= delta);
}