Вопрос

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

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

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

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

Рел

Это было полезно?

Решение

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

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

Другие советы

Из вашего описания я предполагаю, что ваша сцена разделена на плитки.Сохранение массива логических значений — хороший способ отслеживать, какие плитки необходимо перерисовать при следующем обновлении.В некоторых ситуациях LinkedList может работать немного лучше.(Я имею в виду симуляцию «Игры жизни», в которой нужно перерисовать множество плиток, и вам нужно проверять каждого соседа, поэтому, возможно, вам не придется идти по этому пути.)

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top