2009-05-23 8 views
0

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

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

Я до сих пор совершенно не знаком с java и учась на ходу.

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

Rel

+0

Ах, ирония наличия метода _pain_ в больничном приложении. (Извините, не смог удержаться!) – nokul

ответ

3

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

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

1

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

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

Для получения более подробной информации вы можете посмотреть Killer Game Programming in Java.

+0

ЭТО. Я планировал сделать это довольно много, но я забыл! Вы принимаете правильно. Каждый объект спрайта должен иметь свой собственный метод рисования. Я не уверен, как использовать спрайты и анимации на данный момент, и я просто работаю над получением основ игры atm, с простой графикой поворота и простой анимацией движения. Книга выглядит потрясающе! :) – Relequestual

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^