Java swing small 2D game: как смоделировать вид?


В небольшой игре java swing 2D, какое лучшее решение для создания вида доски?

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

2 ответа:

Просто идите с одной чертежной панелью / контейнером для всего.

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

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

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

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

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