3

我正在做 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;
    }
}

如果您需要完整的代码,请告诉我。

4

1 回答 1

7

用于Color.X.equals(c)您的 if 情况,例如c == Color.X. 您正在测试对象是否是相同的实例,而不是它们是否被认为彼此相等。

你也可以c.equals(Color.X)像你一样使用 for Color.RED,但是很多人更喜欢用另一种方式来防范for的NullPointerException情况。cnull

于 2011-04-22T23:57:36.787 回答