MVC в простой Java-игре? - PullRequest
       3

MVC в простой Java-игре?

0 голосов
/ 03 января 2011

Эй, я реализую простой клон Breakout в Java и пытаюсь привести его в соответствие с шаблоном MVC.Признаюсь, я пришел из веб-фона и использовал MVC только в фреймворке Php Symfony, а не в настольном приложении.Поэтому моя проблема состоит в том, чтобы решить, какая сущность отвечает за какие задачи.

Я разделил свой проект на следующие классы:

  • Breakout extends JFrame (основной класс) инициирует MainViewController идобавляет его представление на панель содержимого.
  • MainViewController extends TimerTask инициирует MainView и обрабатывает события мыши и клавиатуры.Также запускает игровой цикл (вычисляет положение и состояние игровых объектов, т. Е. Ball, Paddle, Brick s), это прямо в этом месте?
  • MainView extends JPanel просто рисует Ball, Paddle, Brick s на экране, здесь никакой логики.Но это также инициирует эти объекты.Боюсь, это не правильно, правда?

Наконец, элементы игры:

  • Ball extends Ellipse2D, Paddle extends Rectangle2D и Brick extends Rectangle2D предлагают методы дляпереместите их на экран, но здесь также выполняется обнаружение столкновений.Опять же я сомневаюсь, что это правильное место, переместить его в контроллер?

А что за модель ?Я думаю, именно эти элементы игры, потому что они представляют единственные данные, которые изменяются во время игры.Но это элементы controller , поскольку они также предлагают логику обнаружения столкновений.И самое лучшее в них то, что они инициируются в классе view .Я уверен, что что-то пошло не так в моем дизайнерском решении.

Ответы [ 2 ]

1 голос
/ 03 января 2011
  • Я бы переключил Breakout и MainViewController. Пусть контроллер инициирует просмотр.
  • Ваша модель действительно Ball, Paddle и Bricks, поэтому я думаю, что MainViewController должен их создавать, а не MainView.
  • В противном случае я бы не стал обращать внимание на то, что в некоторых классах родителей модели есть метод, который полезен для рисования. Это не идеальное разделение вида и модели, но оно делает его простым.
1 голос
/ 03 января 2011

Разработка игры - немного другая концепция, но все еще MVC.

Ваши модели являются сущностями игры, такими как мяч, весло и кирпич.

Игра состоит из трех основных шагов.

1 ° Считывание ввода (Вы учитываете это в ViewController)

2 ° Process Pieces AI (Как поведение и движения с новыми значениями из контроллера)

3 ° Рисование на экране (Вы рисуете все свои сущности на экране)

На первом шаге, если пользователь вводит влево или вправо, вы должны обновить сущность весла с этими значениями.

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

Третий шаг - просто нарисовать все элементы на экране.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...