Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.12.2017, 13:01
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 11  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Камрады! Подскажите, пожалуйста, ещё по MVC для моего текстового квеста (кто не в теме, вот в этом сообщении буквально первые два предложения о механике).

Принципиальная схема работы такая: каждую итерацию модель рассчитывает и фиксирует изменение всех параметров, вью обновляет весь вывод. Дальше нужно взять имеющиеся действия (т.е. экземпляры класса Actions для возможных игровых действий, типа "ударить ножом в глаз" ), по текущему сотоянию модели отобрать те из них, которые в данный момент доступны игроку, вывести их на экран и дождаться от него выбора. Это запускает следующую итерацию.

Вопрос, кто конкретно должен "заведовать" этими самыми экземплярами действий? Кто должен создавать их и делать для игрока выборку доступных? Мне кажется, что Контроллер, но возможно я ошибаюсь. Просьба прокомментировать. Спасибо.

Старый 01.12.2017, 16:14
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 12  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
вот ты сам пишешь
Цитата:
по текущему сотоянию модели отобрать те из них, которые в данный момент доступны игроку
Соответственно, мне кажется, сам и отвечаешь на вопрос.. Что за это отвечает модель. Получается, что модель выступает в качестве ситечка, через которое мы пропускаем все доступные действия, а на выходе остаются только нужные. Мы даем их модели, она сопоставляет с собой (глобальными характеристиками, характеристиками игрока и т.п.) и возвращает актуальные на данный момент. Я бы вообще сделал getter actions в модели какой-нибудь, который бы выдавал доступные действия в зависимости от кучи всяких параметров, таких, как уровень, хар-ки игрока и т.п.

Старый 01.12.2017, 17:12
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 13  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Так-то оно так, но меня всё-равно одолевают сомнения. Вот смотри, модель управляет логикой, делает расчёты и хранит в себе изменение всех существенных значений. Если посмотреть на описанную мной ситуацию, то в подборе доступных действий нет ни расчётов, ни изменения состояний. У контроллера есть ссылка на модель со всеми её потрохами, так что технически контроллер может выполнять такую функцию. Плюс в теории именно контроллер должен послать в модель сигнал о том, что ей пора работать. Что это будет, как не выбранное пользователем действие?

Старый 01.12.2017, 18:08
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 14  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Насколько я понимаю, отсев действий происходит не в результате манипуляций пользователя (=контроллера), а в соответствии с параметрами модели. Поэтому и отвечает за это Модель. Ты делаешь ей запрос на доступные действия - она тебе их выдает. Никого не волнует, что происходит внутри модели. Вью интересует лишь результирующий массив действий, чтобы их отобразить, контроллер отвечает за то, чтобы сообщить модели о клике по выбранному действию. Всё.

Старый 01.12.2017, 18:40
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 15  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Контроллер — самая тонкая часть MVC, он просто заведует течением работы приложения. Ждет отклика, пинает модель, ничего более. Создавать список доступных действий надо там, где игровая логика — в модели. Этот список должен быть доступен отображению, чтобы оно могло нарисовать все необходимое.
__________________
Поймай яблоко 2!

Старый 01.12.2017, 19:25
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 16  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Кажется я понял, откуда такая любовь к контроллерам. Это место, в котором нет никакого страшного MVC: есть ссылка на модель "со всеми потрохами" и на Вью со всеми бубенцами, и можно писать код как в кадре, не заморачиваясь всякими ООП.
__________________
Reality.getBounds(this);

Старый 01.12.2017, 19:55
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 17  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
иногда мне кажется, что единственная задача контроллера - это не дать вьюхам напрямую дергать методы модели.Хотя тут высказывалось мнение,что контроллер еще должен заведовать всей клиент-серверной кухней.

Старый 03.12.2017, 15:30
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 18  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Спасибо большое, господа, за содержательные ответы. Понял, согласился, отстал. Иронию, замеченную в некоторых репликах, считаю неуместной, т.к. нахожусь я в начале пути освоения ООП в целом и MVC в частности и без наивных вопросов никуда.

Старый 04.12.2017, 10:09
ZergMaster вне форума Посмотреть профиль Отправить личное сообщение для ZergMaster Найти все сообщения от ZergMaster
  № 19  
Ответить с цитированием
ZergMaster
 
Аватар для ZergMaster

Регистрация: May 2008
Адрес: Питер
Сообщений: 385
Отправить сообщение для ZergMaster с помощью ICQ Отправить сообщение для ZergMaster с помощью Skype™
Wolsh
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Кажется я понял, откуда такая любовь к контроллерам.
Я думаю, это потому, что у него название такое, провокационное. Контроллер. Кажется сразу, что он должен все контролировать и всем управлять. Что все остальное - статические данные, ничего не умеющие, а любые "телодвижения" осуществляет контроллер. Западня.

Добавлено через 4 минуты
Я тут понял, что, любой объект - это модель. И мы можем произвести с этим объектом некоторые манипуляции, узнать некоторые его параметры, а также у него может быть некоторый view (но это не точно).. Это решает некоторые идеологические вопросы в моей голове, связанные с MVC.. )

Старый 04.12.2017, 11:08
Appleman вне форума Посмотреть профиль Отправить личное сообщение для Appleman Найти все сообщения от Appleman
  № 20  
Ответить с цитированием
Appleman
 
Аватар для Appleman

Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
Можно ещё вдогонку? Я сам не сомневался, но тут вас почитал и решил всё-таки уточнить. У меня выводится портрет персонажа в HUD. В зависимости от его состояния HP, подбирается нужный спрайт: от здоровенького, до залитого собственной кровищей (как в DOOM).

Пока вся логика выбора портрета целиком заложена во Вью. То есть при изменении параметров персонажа, вью "спрашивает" Модель, сколько HP осталось, и в зависимости от этого подбирает нужный портрет. И только Вью "знает", сколько всего спрайтов предусмотрено и для какого случая. Если я захочу, например, усложнить этот механизм, и к кровище на лице добавить выражения ярости или страха, в зависимости от значений других свойств, то всё равно вся эта логика останется во Вью. Верно?

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
MVC , mvo , Проектирование
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 14:13.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.