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