我正在编写一个程序,该程序可以自动玩名为bemuse的游戏。目前,我已经设置了所有组件,但是,我正在确定色块是否在您击中它的区域上。
我尝试使用在存在类似问题的线程中提供的距离公式,但始终会得到错误的结果。
boolean similarTo(Color c,Color v){
double distance = Math.sqrt((c.getRed() - v.getRed())*(c.getRed() - v.getRed()) + (c.getGreen() - v.getGreen())*(c.getGreen() - v.getGreen()) + (c.getBlue() - v.getBlue())*(c.getBlue() - v.getBlue()));
// double average1 = c.getRed()+c.getBlue()+c.getGreen();
// double average2 = v.getRed()+v.getBlue()+v.getGreen();
if(distance < 100 ){
return true;
}else{
return false;
}
}
使用它应该在像素变得相似时按下,但是结果总是不同,例如说它们一直都是相同的,永不更新。
答案 0 :(得分:0)
您的问题可能是由于使用了错误的Color
类。您可以在JDK中找到2个Color
类:
java.awt.Color
:公开了getRed,getGreen和getBlue方法,这些方法返回 0-255 之间的 int
值。javafx.scene.paint.Color
:公开了getRed,getGreen和getBlue方法,这些方法返回 0-1 之间的 double
值。如果您使用javafx.scene.paint.Color
,则您的距离永远不会大于1.73。您需要使用java.awt.Color
来设置0-441.67