Реализация меню GUI с MVC в настольном приложении - PullRequest
0 голосов
/ 15 декабря 2009

Я реализую модульный механизм тестирования AI, используя шаблон MVC в python.

Пока все в порядке: AI, мышь, клавиатура являются контроллерами, модель - физический движок, представление - это экземпляр Pygame, который отображает все. У меня есть обработчик событий для обработки большинства сообщений.

Теперь я хочу реализовать систему меню (представьте игровое меню, в котором вы можете выбрать «Загрузить», «Сохранить», «Выйти» и т. Д.). Но я заблокирован, я не могу понять, как мне это реализовать. Проблема в том, что я думаю, что это должен быть частичный контроллер и частичный вид, но я не уверен.

Есть идеи? Спасибо

1 Ответ

1 голос
/ 15 декабря 2009

Во-первых, несколько моментов, слишком часто забываемых при разговоре о MVC:

  1. Ни один шаблон не является догмой. Если лучшим решением не является MVC, это, вероятно, означает, что MVC не подходит для этой проблемы.

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

    • В GUI-MVC триада Model-View-Controller предназначена для каждого прикладного модуля; здесь нет «слоя модели», «слоя представления» и «уровня контроллера».

сейчас, для вашего конкретного случая

Вы можете видеть систему меню как дополнительный модуль, независимый от вашего существующего движка. Этот модуль может (если вам это удобно) иметь собственную структуру MVC. Модель может быть списком (или деревом) команд, представления - это видимые меню, контроллер может быть диспетчером, который получает событие меню и выполняет команды.

Или, все меню может быть просто графическим элементом управления; один из множества существующих контроллеров. Как и любой элемент управления GUI, он имеет видимую часть. Если ваши базовые библиотеки достаточно просты, код для создания и управления меню может быть слишком простым, чтобы стоить сложной внутренней структуры.

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