2013-05-14 3 views
1

Я разместил это на gamedev.stackexchange, но не получил никаких ответов. Надеюсь, кто-то здесь сможет мне помочь.Нужен совет по дизайну/структуре игры

Я работаю над своей первой игрой в C#. Это текстовая игра с использованием Windows Forms. Я был мозговой штурм, чтобы наилучшим образом управлять всеми данными и думать о том, чтобы содержать всю информацию, относящуюся к экземпляру игры в одном классе (Game.cs), и чтобы этот класс отвечал за отслеживание чего-либо важного. (Примечание: я не говорю о том, что у меня есть проект с 1 классом или что-то в этом роде). Я полагаю, что это облегчит сохранение и загрузку (просто сохранит и загрузит этот экземпляр класса), а также упростит запуск новой игры (в настоящее время я инициализирую все переменные в классе инициализации).

Итак, будет ли этот метод в хорошей практике (иметь все, что нужно для отслеживания игры в одном классе)? Если нет, есть ли другой способ, который вы могли бы предложить обрабатывать и размещать данные?

+0

это неплохая идея, но в конечном итоге это зависит от того, остаются ли данные локальными или нет. Также смотрите Serialization – fnostro

+0

У меня уже есть система сохранения/загрузки, которая использует сериализацию. Что вы подразумеваете под данными, остающимися локальными? –

+0

где хранятся данные? на локальном устройстве пользователя (ПК, смартфоне, планшете, ноутбуке и т. д.) или на каком-то внешнем хранилище через Ethernet-соединение. Чем больше этот класс данных, тем больше времени потребуется, чтобы писать, что не страшно, если его локальное, но через соединение ethernet вы должны убедиться, что данные там нет. – fnostro

ответ

5

Вы близко к прибытию в MVC pattern самостоятельно.

Итак, что бы вы сделали, это назвать эту Game.cs вашей «моделью» и она будет содержать всю информацию, относящуюся к состоянию игры. Тогда ваша задача формы будет отображать текущее состояние игры, так как состояние игры изменяется. (может быть, события, связанные с обновлением формы?) Он также подключит все действия, которые ваш игрок возьмет через пользовательский интерфейс к контроллеру. Задача Контролера будет заключаться в предоставлении методов для принятия действий и манипулирования состоянием игры на основе этих действий. Например. MoveRight() обновит Game.Position.X.

Затем вы можете взять все состояние игры и сохранить/загрузить, что является вашим намерением. Поэтому я не вижу проблемы с тем, что вы пытаетесь сделать.

+0

Спасибо за совет! Теперь я рассмотрю шаблон MVC. –