假设红色= 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个点分开,它就会在括号中显示。
答案 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);
}