2010-11-13 33 views
0

我有一個程序,分離應用程序的邏輯從繪圖。有幾種配色方案,我想知道,如果這是可以接受的編程或是否有更好的方法來實現選擇和繪圖的配色方案:java鞦韆塗料方法富礦

public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    colorScheme = gameLogic.getColorScheme(); 

    for (int i = 0; i < gameLogic.getParticleArrSize(); i++) { 
     if (colorScheme == 0) { 
      setBackground(Color.WHITE); 
      g.setColor(gameLogic.getParticleColor(i)); 
      g.fillOval(gameLogic.getParticleXCoor(i), 
        gameLogic.getParticleYCoor(i), 
        gameLogic.getParticleSize(i), 
        gameLogic.getParticleSize(i)); 
      g.setColor(gameLogic.getCurrPartColor()); 
      g.fillOval(mouseX - mouseOvalRadius, mouseY - mouseOvalRadius, 
        mouseOvalSize, mouseOvalSize); 
      g.setColor(gameLogic.getCursorColor()); 
      g.fillOval(mouseX - 19, mouseY - 19, 38, 38); 
     } else if (colorScheme == 1) { 
      setBackground(Color.WHITE); 
      g.setColor(gameLogic.getParticleBorderColor(i)); 
      g.fillOval(gameLogic.getParticleXCoor(i) - 3, 
        gameLogic.getParticleYCoor(i) - 3, 
        gameLogic.getParticleSize(i) + 6, 
        gameLogic.getParticleSize(i) + 6); 
      g.setColor(gameLogic.getParticleColor(i)); 
      g.fillOval(gameLogic.getParticleXCoor(i), 
        gameLogic.getParticleYCoor(i), 
        gameLogic.getParticleSize(i), 
        gameLogic.getParticleSize(i)); 
      g.setColor(gameLogic.getCurrPartColor()); 
      g.fillOval(mouseX - mouseOvalRadius, mouseY - mouseOvalRadius, 
        mouseOvalSize, mouseOvalSize); 
      g.setColor(gameLogic.getCursorColor()); 
      g.fillOval(mouseX - 19, mouseY - 19, 38, 38); 


     } else if (colorScheme == 2) { 
      setBackground(Color.BLACK); 
      g.setColor(Color.WHITE); 
      g.fillOval(gameLogic.getParticleXCoor(i) - 3, 
        gameLogic.getParticleYCoor(i) - 3, 
        gameLogic.getParticleSize(i) + 6, 
        gameLogic.getParticleSize(i) + 6); 
      g.setColor(gameLogic.getParticleColor(i)); 
      g.fillOval(gameLogic.getParticleXCoor(i), 
        gameLogic.getParticleYCoor(i), 
        gameLogic.getParticleSize(i), 
        gameLogic.getParticleSize(i)); 
      g.setColor(Color.WHITE); 
      g.fillOval(mouseX - mouseOvalRadius - 2, 
        mouseY - mouseOvalRadius - 2, 
        mouseOvalSize + 4, 
        mouseOvalSize + 4); 
      g.setColor(gameLogic.getCursorColor()); 
      g.fillOval(mouseX - 19, mouseY - 19, 38, 38); 

     } else if (colorScheme == 3) { 
      setBackground(Color.WHITE); 
      g.setColor(Color.BLACK); 
      g.fill3DRect(gameLogic.getParticleXCoor(i) - 2, 
        gameLogic.getParticleYCoor(i) - 2, 
        gameLogic.getParticleSize(i) + 4, 
        gameLogic.getParticleSize(i) + 4, true); 
      g.setColor(gameLogic.getParticleColor(i)); 
      g.fillRect(gameLogic.getParticleXCoor(i), 
        gameLogic.getParticleYCoor(i), 
        gameLogic.getParticleSize(i), 
        gameLogic.getParticleSize(i)); 
      g.setColor(Color.BLACK); 
      g.fillRect(mouseX - mouseOvalRadius, 
        mouseY - mouseOvalRadius, 
        mouseOvalSize, 
        mouseOvalSize); 
      g.setColor(gameLogic.getCursorColor()); 
      g.fillRect(mouseX - mouseOvalRadius + 7, 
        mouseY - mouseOvalRadius + 7, 
        mouseOvalSize - 14, 
        mouseOvalSize - 14); 

     } 
    } 
} 
+0

重新格式化的代碼;如果不正確請回復。 – trashgod 2010-11-13 04:37:51

回答

1

您可以定義一個抽象配色方案類,它將聲明繪製各個遊戲對象的方法(實現會使用不同的形狀或顏色來實現)。您發佈的paintComponent方法只會獲取當前的配色方案並將所有繪圖委託給它。

+0

這真是個好主意。我的代碼會感謝你。 – 2010-11-13 16:54:57

1

您應該調查LookAndFeel concept in Swing。它允許您定義不同的配色方案,併爲您提供確保所有組件具有相似外觀的框架。