Показать сообщение отдельно
Старый 09.05.2012, 01:16
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 12  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
МVC - он для сайтов и социалочек всяких работает. А вот для аркады - уверенности нет (делал раза 2 и очень давно).
Зайдите на gamedev.ru - там популярнее объяснят как конкретно делать игры.
Есть же и другие подходы, например entity-based system (сам не пробовал)
По сути:
Цитата:
У нас квадратики с вопросительными знаками, удар по которым прибавляет нам количество монеток в счетчике. Я правильно понимаю, что такой квадратик нужно вынести в отдельный класс? Да и счетчик тоже (пусть даже в комплексе с другими счечиками).

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

Как это делается грамотными разработчиками?..
Определить столкновение с кубиком и показать монетку затруднения не возинкло, а отобразить изменение счета - возникло?

Я бы в такой ситуации взял бы прямо объект "верхняя панель", добавил туда пару методов:
Код AS3:
private var _money:int = 0;
public function get money():int
{
   return _money;
}
public function set money(value:int):void
{
   _money = value;
   _moneyTextField.text = value + "$";
}
Потом передал бы ее тому куску кода, который показывает монетки. Передал бы через конструктор - панель она всю игру существует - можно и через конструктор передать.
И добавил бы к этому коду строчку
Код AS3:
_panel.money += brickKickBonusMoney;
А потом бы уже глядя на _рабочий_ код думал какими проблемами такой подход чреват. Надо ли выделить класс PanelModel или так и таскать вьюшку по контроллеру, т.к. пофиг. Где лучше хранить вычисление бонуса - на кирпиче или в глобальном контроллере и т.д.


Последний раз редактировалось expl; 09.05.2012 в 01:20.