2010-11-13 36 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。它允许您定义不同的配色方案,并为您提供确保所有组件具有相似外观的框架。