Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реализовать крестики-нолики 
:(
    Опции темы
Alexey91
  Дата 20.5.2012, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



Здравствуйте!

Знакомлюсь с паттернами.
Прочитал про бизнес-логику, что она является функциональной логикой предметной области.
Или иначе говоря переносит определенную предметную область в информационную систему.

В паттерне MVC есть 3 элемента

Модель - она реализует бизнес-логику
Представление - то, как данные выглядят на дисплее
Контроллер - для обработки внешних событий.

Если на примере игры, камень-ножницы-бумага.
В игре участвуют 2n игроков, ход игры по типу плей-офф (если 8 игроков, играют 2 пары по 4 игрока, затем 2 пары по 2 игрока, затем определяется финалист)

То в данном случае, что куда относится:
Модель - сам алгоритм игры (ножницы режут бумагу, камень тупит ножницы..)
Представление - выводит на экран сопроводительные сообщения ("Вы выиграли", или "Вы проиграли", или "Ничья. Давайте еще")
Контроллер - управляет всем ходом игры. Ввод количества игроков, затем в цикле определяет нужны пары игроков, запускает метод модели.

Или в контроллере нужно только вбить количество игроков. А уже сам процесс игры (весь плейофф между игроками) находится в модели?
PM   Вверх
magesi
  Дата 20.5.2012, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 20.5.2012

Репутация: -4
Всего: -4



Цитата(Alexey91 @  20.5.2012,  10:22 Найти цитируемый пост)
А уже сам процесс игры (весь плейофф между игроками) находится в модели?

Модель базовую обработки алгоритма: "камень-ножница-бумага", я бы сделал в модели, а в контроллере реализовал разбиение на потоки для плейоффа.
Т.е. все базовое такое даже в логике игры, я бы реализовал в модели, а уж управление само этой же логикой одной между многими игроками - реализовал бы в контроллере.

Цитата(Alexey91 @  20.5.2012,  10:22 Найти цитируемый пост)
Или в контроллере нужно только вбить количество игроков.

А это бы, я бы вообще хранил в отдельной статич. структуре/классе и назвал бы Header, как для статистики, чтобы если что обращаться можно было из всех частей MVC.



Это сообщение отредактировал(а) magesi - 20.5.2012, 13:46
PM MAIL   Вверх
Alexey91
Дата 20.5.2012, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 18.9.2008

Репутация: нет
Всего: нет



magesi, спасибо за ответ!

Я правильно понимаю, что в модели только правила игры. 
В данном случае пока я только вижу одну функцию, которая определяет "кто кого" 

Мне вот стало интересно, а если например игра более сложная? Типа дурака. Я правильно понимаю, что в модель пойдет например следующее: козыри бьют обычные карты; обычные карты высокого ранга бьют обычные карты низкого ранга; кто остался с картами тот проиграл; у кого карт больше n, тот карты из колоды не берет.

А вот сама раздача карт, кто на кого ходит реализуется в контроллере?

И как отделить представление от модели, и контроллера? Если приложение консольное, то нужно просто вывод на экран делать, а если с GUI, то там уже готовые MFC например, или QWindow

Это сообщение отредактировал(а) Alexey91 - 20.5.2012, 15:10
PM   Вверх
math64
Дата 21.5.2012, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 8
Всего: 72



В случае карточной игры, нужны модель карты, колоды, раздатчика карт, игрока, ну и модель игры.
В представлении игры будут картинки карт и рубашки и т. д.
Контроллер управляет игрой, обрабатывая нажатия клавиш и движение мыши.
В готовых GUI обычно контроллер сливается с представлением. В Qt, например, есть QAbstractItemModel и QTableView, а класса для контроллера нет, но есть делегаты, которые в MVC не предусмотрены. Можно считать контроллером слоты, но выделять их в отдельный класс довольно хлопотно.
В случае сетевой игры, модель, представление и контроллер будут физически разделены на разных машинах - представление на машинах игроков, контроллер на сервере, а модель можно разместить в базе данных. Наверно, из такой идеологии и нужно исходить, определяя границы между моделью, представлением и контроллером, даже если всё это будет находиться на одной машине.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0682 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.