У меня есть программа, которая отделяет логику приложения от чертежа. Существует несколько цветовых схем, и мне интересно, является ли это приемлемым программированием или есть лучший способ выполнить выбор и отрисовку цветовых схем:
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);
}
}
}