2015-08-23 5 views
0

Im совершенно новый здесь, и я изучаю java на 2 месяца. Я действительно изучаю Threads и многопоточность, и у меня есть небольшой вопрос. Практиковать Im, пишущую простую 2D-карточную игру (например, MTG или HearthStone). Я много сделал для этого момента, но мне интересно, сколько потоков я должен использовать, чтобы создать наиболее эффективное приложение и приобрести хорошие привычки.Сколько потоков в Java 2D-игре?

Итак, на данный момент у меня есть JFrame в EventQueue, а другой класс расширяет JPanel и реализует Runnable, который является моим Board и имеет игровой цикл (с методами init(), uptade() и repaint() и Mouse Listeners).

Это хорошо для простой игры? Или, возможно, у каждой Карты на борту должен быть отдельный поток для отображения информации о Карте, перекраски и т. Д.?

Я благодарен за любую помощь, Приветствия!

+0

Было бы лучше для формата этого форума, если бы ваши вопросы были сосредоточены на одной проблеме или проблеме, которая может быть проиллюстрирована кодом или фреймом стека. В его нынешнем виде ваш вопрос очень широк, распространен, и ответы, скорее всего, будут основаны на мнениях. – scottb

+3

Нить на карту - всего лишь пустая трата ресурсов ИМО. Хорошая идея может быть для самой игры. – Emd4600

ответ

4

Threading значительно увеличит сложность вашей программы, поэтому используйте ее очень экономно. (Это также большая приверженность системным ресурсам, но это вряд ли будет вашей большой проблемой здесь)

Я бы предложил начать, сделав приложение однопоточным. Если вы обнаружите, что логика игры занимает настолько много времени, что делает UI вялым и безответственным, вы можете взглянуть на запуск пользовательского интерфейса и логики игры на отдельных потоках, но это маловероятно (если ваша карточная игра серьезно сложна). Действительно, место, где нужно задуматься о многопоточных моделях, было бы, когда у вас есть несколько клиентов, подключающихся - тогда каждому клиенту понадобится собственный поток, и вам придется иметь дело с взаимодействиями между ними.

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

+0

Хорошо, спасибо за ваш совет. Когда я изучаю Java, я пишу много простых приложений, которые затрагивают данную проблему, помимо моего проекта CardsGame. ;) –

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