我正在尝试实现一些非常简单的东西(原则上),但我在实现方面遇到了一些麻烦。
在我的程序中,用户必须在1 到 4 个方向之间进行选择,这些方向应被排除在外。对于每个方向,用户可以为要排除的值选择一个数字范围(从 0 到 360)。但不知何故,我无法弄清楚如何以一种简单的方式做到这一点。
我的面板看起来像这样:A)
这是我要实现的目标的简短示例。
我想要同样的结果:B)
至于这个(但它当然应该适用于所有 4 种情况):C)
您对如何解决这个问题有任何想法吗?或者一些提示?任何帮助将不胜感激。 (如果你想让我提供我尝试过的代码,我会的)。
编辑:好吧,你想要一些代码,这就是我所做的(但它没有按我的意愿工作)。
content[i].getNwdMean() 是我想与微调器中的值进行比较的值,以查看我的观点是否在禁区内。
buttons.chkExcludedA1、buttons.chkExcludedA2、buttons.chkExcludedA3 和buttons.chkExcludedA4 是要排除的方向的按钮。
button.getDir1A()、getDir2A、getDir3A、getDir4A、getDir1B、getDir2B、getDir3B、getDir4B 是存储在微调器中的值,在我的示例中为 C),getDir1A = 180,getDir1B = 190;getDir2A = 190 和 getDir2B = 200。
// Is supposed to check the interval in both sides.
public static boolean isBetween(double x, double a, double c)
{
return(x > (a < c ? a : c) && x < (a > c ? a : c));
}
private boolean parsDirections(boolean state)
{
boolean a1 = false, a2 = false, a3 = false, a4 = false;
if (buttons.chkExcludedA1 == true || buttons.chkExcludedA2 == true || buttons.chkExcludedA3 == true || buttons.chkExcludedA4 == true)
{
if (isBetween(content[i].getNwdMean(), buttons.getDir1A(), buttons.getDir1B()) == false)
{
a1 = true;
}
else if (isBetween(content[i].getNwdMean(), buttons.getDir2A(), buttons.getDir2B()) == false)
{
a2 = true;
}
else if (isBetween(content[i].getNwdMean(), buttons.getDir3A(), buttons.getDir3B())== false)
{
a3 = true;
}
else if (isBetween(content[i].getNwdMean(), buttons.getDir4A(), buttons.getDir4B()) == false)
{
a4 = true;
}
}
// Basic test to see if it prints what i want, but it doesn't.
if (a4 == true && a2 == true)
{
print(state);
}
else if (a1 == true && a2 == false)
{
print(state);
}
else
{
return state;
}
return state;
}