java качели краски метод бонанса - PullRequest
0 голосов
/ 13 ноября 2010

У меня есть программа, которая отделяет логику приложения от чертежа. Существует несколько цветовых схем, и мне интересно, является ли это приемлемым программированием или есть лучший способ выполнить выбор и отрисовку цветовых схем:

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);

        }
    }
}

Ответы [ 2 ]

1 голос
/ 13 ноября 2010

Вы можете определить класс абстрактной цветовой схемы, который будет объявлять методы для рисования отдельных игровых объектов (реализации будут делать это с использованием различных форм или цветов).Метод paintComponent, который вы опубликовали, просто выбрал бы текущую цветовую схему и делегировал бы весь рисунок.

1 голос
/ 13 ноября 2010

Вам следует изучить концепцию LookAndFeel в Swing . Он позволяет вам определять различные цветовые схемы и дает основу для того, чтобы все компоненты выглядели одинаково.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...