3

私はiTunesU(まだかなり緑色)でのスタンフォード大学の講義からのブレイクアウトの割り当てに取り組んでいて、うなり声に出くわしました。スコアを計算できるように、さまざまな色のレンガにポイント値を設定しようとしていますが、うまくいかないようです。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)の場合と同じように使用することもできますが、多くの人は、の場合にColor.RED備えて他の方法で保護することを好みます。NullPointerExceptioncnull

于 2011-04-22T23:57:36.787 に答える