2015-10-18 6 views
0

Первого некоторый фон ...Card Программа игры: Дизайн

В настоящее время я работаю над «практикой проектом», чтобы сохранить и усовершенствовать свои навыки программирования. Проект представляет собой систему карточных игр (похожую на MTG и другие торговые карточные игры). Я в настоящее время имеют следующие концепции реализованы:

Есть игрока s, которые могут быть созданы/сохранены/загружены, которые содержат информацию о профиле, выигрывайте статистика/потери, а также список Deck с. Каждый Deck содержит список карт (они на самом деле конкретизации из четырех различных типов карт , а не абстрактные карт себя с), которые имеют все атрибуты, необходимые для игрового процесса.

вопрос ...

Сохранение игрок с, палубных s, и карт s излишне избыточное. При наличии несколько палубных s с теми же картами s или несколько игрок s с аналогичными Deck с, то программой будет сохранение же карт S снова и снова. Для примера: Если Карты А очень популярен, то игрока s поставит несколько копий на несколько деке с. Таким образом, одна и та же карта будет сохранена снова и снова.

Концептуальное решение ...

Идея заключается в том, что игрока s и Deck s являются уникальными, но карты s взяты из общего пула (набора или коллекции, которые каждый может использовать для сборки Палуба s). Поэтому я создал каталог для сохранения/загрузки Player s и их Палуба s и отдельный каталог для хранения отдельных Карточка s, которые являются частью набора. Я хотел бы сохранение и загрузку игрока с и Deck ы использовать Card идентификаторов, которые затем ссылаются на Card каталога для загрузки и инстанцирование фактических объектов. Кроме того, обратное необходимо выполнить при сохранении (не сохраняя Палуба с Карточка с, но с Карточка ID).

вопрос (ы) ...

Есть ли шаблон проектирования я должен быть использование, чтобы помочь с сохранения/загрузки на основе идентификаторов?Должен ли я разделиться Палуба s на Палуба s для игры и Палуба списки на хранение? Должен ли я создавать и хранить PlayerProfile s с DeckList с и использовать их для сохранения/загрузки игрока с и палубные сек?

ПРИМЕЧАНИЕ: Если вы хотите увидеть код, сообщите мне. Это просто слишком много, чтобы опубликовать здесь.

ответ

2

Что вы ищете, это шаблон дизайна flyweight. Вместо того, чтобы хранить полную копию любой карты, вы просто сохраняете что-то вроде 5C, 8D и т. Д. Ваше приложение должно иметь возможность «декодировать» это в полный объект.

Смежные вопросы