我正在编写一个程序,该程序可以自动玩名为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;
}
}
使用此功能,应在像素变得相似时按下,但结果总是不同,例如它始终表示相同,永不更新。
最佳答案
您的问题可能是由于使用了错误的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之间的距离
关于java - 如果一个像素的颜色与另一个颜色相似,如何比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56104846/