首先是一些背景......
我目前正致力于“练习项目”,以保持并提高我的编程技巧。该项目是纸牌游戏系统(类似于MTG和其他交易卡游戏)。我目前实施了以下概念:
可以创建/保存/加载播放器,其中包含配置文件信息,赢/输统计信息以及 Deck 列表。每个 Deck 都包含一个 Cards 列表(它们实际上是四种不同的 Card 类型的实例,而不是抽象的卡 > s自己),具有游戏所需的所有属性。
问题......
保存播放器, Deck 和卡是不必要的冗余。如果有多个具有相同卡的 Deck 或具有类似 Deck 的多个 Player ,则程序将一遍又一遍地保存相同的卡。 例如:如果卡A 非常受欢迎,那么播放器将把多个副本放入多个 Deck 中。因此,同一张卡片将一次又一次地保存。
概念解决方案......
这个想法是 Player 和 Deck 是唯一的,但 Card 来自公共池(一个集合或集合,每个人都可以用来构建 Deck 。因此,我创建了一个目录,用于保存/加载 Player 及其 Deck ,以及一个单独的目录,用于存储单独的 Card s一套。我想保存和加载播放器和 Deck 以使用卡 ID,然后引用卡用于加载和实例化实际对象的目录。此外,保存时需要反向(不使用卡保存 Deck ,但使用卡 ID)。
问题......
我是否应该使用设计模式来帮助基于ID进行保存/加载?我应该将 Deck 分解为 Deck 用于游戏和 Deck 列表进行存储吗?我应该使用 DeckList 创建和存储 PlayerProfile 并使用它们来保存/加载播放器和 Deck ?
注意: 如果您想查看代码,请与我们联系。在这里张贴太多了。