Java Swing 2D 2D игра: как моделировать вид? - PullRequest
4 голосов
/ 18 февраля 2010

Какое лучшее решение для создания вида на доске в маленькой 2D-игре на Java-качелях?

  1. Использовать компонент для доски и покрасить его и каждую клетку сразу?
  2. Используйте компонент для доски и создайте другой компонент, моделирующий квадрат с его собственным компонентом рисования, выполняющим работу только для квадрата. Использовать макет для размещения каждого экземпляра Square на доске?

Я знаю, что это субъективно, и я не хочу ссориться по этому поводу. Мне просто нужны подсказки, чтобы понять, куда мне идти. Я начал сторонний проект и использую 1) с ощущением, что что-то не так.

Ответы [ 2 ]

6 голосов
/ 18 февраля 2010

Просто используйте одну панель для рисования / контейнер для всего.

Рассмотрим игру на основе плитки. При использовании вашего второго решения каждая плитка будет объектом, память взлетит до небес, и игра замедлится до скорости.

Используя первый вариант, вы гибки. Вы рисуете, что вы хотите, у вас есть координаты панели, так что все относительно этого. Используя пример на основе плитки, вы узнаете высоту и ширину панели, нарисуете квадрат и увеличите координаты X и Y соответственно.

Фреймворки с графическим интерфейсом, такие как Swing или .NET Winforms, дороги, поскольку в них есть множество других вещей, которые не нужны игре. Поэтому, чтобы ответить на ваш вопрос, используйте первый вариант, а не говорите, что используете панель для каждой проверки на вашей доске.

Одним хорошим решением для использования второго метода в сочетании с первым методом является Flyweight Design Pattern . Вы по-прежнему можете использовать ОО-объекты, но у вас будет доля от обычной суммы. Проверьте это.

3 голосов
/ 18 февраля 2010

Как и Финглас, я склоняюсь к вашему первому подходу. Эта игра на основе плитки является конкретным примером. Напротив, в этой компонентной игре используется GridLayout из JToggleButton. Первое несколько сложнее, но хорошо играет даже на больших экранах; последнее проще, но достаточно для разумных игр. Возможно, вам придется поэкспериментировать с геометрией и логикой вашей игры, чтобы решить, какой из них выбрать.

...