我有一種遊戲有兩種模式:定時限制和股票限制(有點像粉碎兄弟)。在我的遊戲循環中,名爲renderGame()的方法被稱爲更新移動對象的座標,然後調用repaint()。避免不必要的檢查
@Override
public synchronized void paint(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
//Background Image
g2d.drawImage(displayBackground, 0, 0, null);
//Stage Image
g2d.drawImage(displayMap, 0, 0, null);
//Players Images
for(Player p: players){
if(p.getPlayerNumber() == 1)
g2d.drawImage(displayMario, p1XDisplayCoord, p1YDisplayCoord, null);
else
g2d.drawImage(displayLuigi, p2XDisplayCoord, p2YDisplayCoord, null);
}
//Not implemented yet
drawHUD(g2d);
g2d.dispose();
}
我的問題是:我怎樣才能讓這個在drawHUD()方法將利用基於匹配中的當前進展的不同的事情,而不必測試,每次我打電話的時間定義狀態的條件renderGame()在我的遊戲循環?有點像鐵路交換機。
例如:它應該在啓動過程中繪製一個「ready-set-go」序列,在玩法期間玩家的統計數據,並且一旦比賽結束,它應該表示比賽獲勝者。它也應該取決於遊戲類型。例如:顯示一個計時器,該計時器在庫存匹配期間遞增,但在計時匹配期間遞減。
你可以提供不同的類,它有一個「繪製」方法,只需繪製特定實現所需的特徵,然後根據需要更改使用哪個實例 – MadProgrammer
@MadProgrammer我想我知道它可能是這樣做,但我試圖找到一個不涉及新類的較低級別的解決方案。 – hjl
然後你總是需要做一些狀態檢查:P – MadProgrammer