Как я могу разделить метод качания краски в Java? - PullRequest
0 голосов
/ 23 мая 2009

Я разрабатываю симуляционную больничную игру хорошего размера в Java. Прямо сейчас, мой метод боли начинает выглядеть немного большим, и мне нужен способ разделить его на несколько частей ... У меня есть идея, но я не уверен, что это лучший способ. Он начинается с покраски травы, затем здания больницы, затем любых зданий, затем людей, а затем любого здания предварительного просмотра при строительстве. Трава и здание больницы не изменится, поэтому мне нужно только один раз покрасить. Сами здания не будут меняться очень часто, только при строительстве новых.

Я думал, использовать логические значения, чтобы определить, какие разделы нужно перекрасить? В идеале, я бы хотел разделить метод рисования, а затем вызывать каждый из них при необходимости, но я не уверен, как его физически разделить.

Я все еще новичок в Java и учусь на ходу.

Заранее спасибо.

Rel

Ответы [ 3 ]

3 голосов
/ 23 мая 2009

Другая идея заключается в создании суперкласса или интерфейса для всех элементов, которые должны быть нарисованы на экране. Позволяет назвать этот класс ScreenObject. Затем вы можете иметь метод draw (Graphics2d g), указанный в классе ScreenObject. Далее, каждый объект, который должен быть нарисован, реализует метод draw () и касается только самого рисования. Вы даже можете создать переменную, которая определяет, должен ли этот метод рисования выполняться вообще.

В основном классе, который рисует экран, вы можете иметь ссылку на все объекты ScreenObject в ArrayList, и ваш метод paint () будет просто перебирать этот вызов draw () для каждого объекта.

1 голос
/ 23 мая 2009

Я предполагаю из вашего описания, что ваша сцена разбита на плитки. Хранение массива логических значений - это хороший способ отслеживать, какие плитки нужно перерисовать при следующем обновлении. LinkedList может работать немного лучше в некоторых ситуациях. (Я имею в виду симулятор Game of Life, в котором нужно перерисовать множество плиток, и вам нужно проверить каждого соседа, поэтому вам может не понадобиться идти по этому пути.)

Не видя ваш код, я не могу дать очень конкретного совета по разделению вашего метода рисования. Я могу вам сказать, что в спрайтовой анимации каждый спрайтовый объект обычно имеет свой собственный метод рисования, который принимает основной объект Graphics (или, скорее всего, буфер) в качестве параметра. Поскольку спрайт должен знать свое собственное изображение и местоположение, он может затем нарисовать себя в основном изображении. Затем ваш метод рисования может просто пройтись по списку спрайтов, которые необходимо перерисовать, и вызвать их метод рисования.

Вы можете обратиться к Программирование Killer Game на Java для получения более подробной информации.

0 голосов
/ 23 мая 2009

Ну, я не очень разбираюсь в программировании, но, чтобы разделить свой метод рисования, я всегда создавал новый метод, который берет объект Graphics и вызывал его из рисования, это всегда помогало мне сохранять свой код организованным, но я никогда не было такого большого проекта, как кажется, над которым вы работаете, поэтому он может не сработать в вашей ситуации.

...