Тестирование, если цвета равны - PullRequest
3 голосов
/ 23 апреля 2011

Я работаю над заданием Breakout из лекций Стэнфорда на iTunes U (все еще довольно зеленого цвета) и наткнулся на рычание.Я пытаюсь установить значение балла для разноцветных кубиков, чтобы я мог рассчитать балл, но мое «если» не работает.У меня есть ощущение, что 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;
    }
}

Если вам нужнополный код, дайте мне знать.

1 Ответ

7 голосов
/ 23 апреля 2011

Используйте Color.X.equals(c) для ваших случаев if, подобных c == Color.X.Вы проверяете, являются ли объекты одним и тем же экземпляром, а не считаются ли они равными друг другу.

Вы также можете использовать c.equals(Color.X), как вы делали для Color.RED, сколько бы людейпредпочитаю другой способ защиты от NullPointerException для случаев, когда c равно null.

...