2
我正在从斯坦福大学的iTunes U讲座(仍然很漂亮的绿色)开始工作,并且遇到了咆哮。我试图为不同的彩色砖块设定一个点值,这样我就可以计算出一个分数,但是我的if似乎不起作用。我有一种感觉,getColor()没有返回我认为它的值;我创建了一个状态标签来显示它返回的内容,但我仍然无法弄清楚如何测试。这很可能是我错过了一些简单的事情,或者还不知道。测试颜色是否等于
这里是该片的片段我工作:
if (collider != null && collider != paddle) {
remove(scoreLabel);
vy = -vy;
Color brickColor = collider.getColor();
add(new GLabel("" + collider.getColor(), 10, 12));
double temp = brickVal(brickColor) * scoreMultiplier;
score += Math.abs(temp);
addScoreboard();
remove(collider);
}
}
private double brickVal(Color c) {
if (c.equals(Color.RED)) {
return 10.0;
} else if (c == Color.ORANGE) {
return brickVal = 8.0;
} else if (c == Color.YELLOW) {
return brickVal = 6.0;
} else if (c == Color.GREEN) {
return brickVal = 4.0;
} else if (Color.CYAN.equals(c)) {
return brickVal = 2.0;
} else if (c == Color.MAGENTA) {
return brickVal = 1.0;
} else {
return 1.0;
}
}
如果您需要完整的代码,让我知道。
谢谢。我还发现我的问题的一部分是我的scoreMultiplier是0. * facepalm * – 2011-04-23 00:32:14
并且使用==作为比较是合法的,因为所有颜色定义都是静态的。对象没有区别。等号方法只是比较颜色的RGB内容,但应该可以工作。 – Vetsin 2011-04-23 00:35:46
只要被比较的Color对象与相同的静态实例相反,只要'=='可以。然而,如果被比较的“颜色”对象来自其他地方,那么这将是一个问题。可能在这种情况下,你是对的,没关系。这听起来像乘以0可能是一个更大的问题:) – WhiteFang34 2011-04-23 00:40:48