我正在 iTunes U 上完成斯坦福大学讲座中的 Breakout 作业(仍然很绿),遇到了咆哮。我正在尝试为不同颜色的积木设置一个点值,以便计算分数,但我的 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;
}
}
如果您需要完整代码,请告诉我。
最佳答案
将 Color.X.equals(c)
用于类似 c == Color.X
的 if 情况。您正在测试对象是否是同一实例,而不是它们是否被视为彼此相等。
您也可以像使用 Color.RED
一样使用 c.equals(Color.X)
,但是许多人更喜欢另一种方式来防止 >NullPointerException
对于 c
为 null
的情况。
关于java - 测试颜色是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5761117/