Первого некоторый фон ...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 с и использовать их для сохранения/загрузки игрока с и палубные сек?
ПРИМЕЧАНИЕ: Если вы хотите увидеть код, сообщите мне. Это просто слишком много, чтобы опубликовать здесь.