Я пишу маленькую карточную игру, и я застрял. Просто некоторые основные: 1) вид наблюдает модель 2) контроллер решает, когда нужно показать окно вывода и когда показывать окно ввода 3) модель делает все математикаMVC: проблемы реализации в приложении командной строки
Ну, это выглядит как мой контроллер должен быть наблюдатель модели, что плохо и, насколько я знаю, также ошибочно.
Мое положение: наступает момент, когда пользователь должен сделать выбор и подтвердить его с помощью командной строки.
char View::getPlayersChoice
{
while (cin>>choice)
{
if (choice == 'y' || choice == 'n')
controller.getPlayersChoice(choice)
else
cout<<"Invalid input. Please try again."
}
}
Так или иначе мой контроллер должен знать, когда пришел момент и вызвать представление в функции getPlayersChoice. И единственный способ, которым я это вижу: 1) модель нуждается в некотором вводе пользователя 2) модель сообщает контроллеру: «Эй, дайте мне вход!» 3) контроллер говорит «ОК» и вызывает view.getPlayersChoice 4) контроллер дает ввод в модель
Но опять-таки модель не должна ничего знать о контроллере и виде. Итак, как мне решить эту проблему? Спасибо за помощь
P.S. Есть идея, которую я имею: возможно, мне нужно создать что-то вроде событий и передать ее как аргумент, например observer.update(eventThatHappened)
. Просмотр получает событие, вызывает соответствующий метод, но задача контроллера заключается в том, чтобы решить, когда пользователь должен вводить информацию, и когда он должен показывать что-то.
'если (выбор == 'у' || 'п')' не делать то, что вы думаете, что делает! –
Упс, спасибо за это, я обновлю свой пост. – eoLithic