Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 纸牌游戏程序设计_Python 2.7_Design Patterns - Fatal编程技术网

Python 2.7 纸牌游戏程序设计

Python 2.7 纸牌游戏程序设计,python-2.7,design-patterns,Python 2.7,Design Patterns,首先是一些背景… 我目前正在进行一个“实践项目”,以保持和完善我的编程技能。该项目是一个纸牌游戏系统(类似于MTG和其他交易纸牌游戏)。我目前实施了以下概念: 有些玩家可以创建/保存/加载,其中包含个人资料信息、赢/输统计信息和牌组列表。每副牌都包含一张牌的列表(它们实际上是四种不同牌类型的实例,而不是抽象牌本身),具有游戏所需的所有属性 问题… 保存玩家、牌组和牌是不必要的冗余。如果有多个牌组具有相同的牌组或多个玩家具有相似的牌组,那么程序将一次又一次地保存相同的牌例如:如果卡片A非常流行,那

首先是一些背景…

我目前正在进行一个“实践项目”,以保持和完善我的编程技能。该项目是一个纸牌游戏系统(类似于MTG和其他交易纸牌游戏)。我目前实施了以下概念:

有些玩家可以创建/保存/加载,其中包含个人资料信息、赢/输统计信息和牌组列表。每副牌都包含一张牌的列表(它们实际上是四种不同牌类型的实例,而不是抽象牌本身),具有游戏所需的所有属性

问题…

保存玩家、牌组和牌是不必要的冗余。如果有多个牌组具有相同的牌组或多个玩家具有相似的牌组,那么程序将一次又一次地保存相同的牌例如:如果卡片A非常流行,那么玩家会将多份副本放入多个牌组中。因此,同一张卡将被反复保存

概念解决方案…

其想法是,玩家和牌组都是独一无二的,但是牌来自一个共同的池(每个人都可以用来建造牌组的集合)。因此,我创建了一个用于保存/加载玩家及其牌组的目录,以及一个单独的目录,用于存储一组中的单个牌。我希望保存和加载玩家和牌组以利用卡ID,然后它将引用卡目录来加载和实例化实际对象。此外,在保存时需要进行相反的操作(不是用卡保存牌组,而是用卡ID保存牌组)

问题…

我是否应该利用设计模式来帮助基于IDs的保存/加载?我是否应该将牌组分成牌组进行游戏和储存牌组列表?我是否应该创建并存储带有甲板列表的玩家档案,并使用它们来保存/加载玩家和甲板


注意:如果您想查看代码,请告诉我。在这里发布太多了。

您需要的是设计模式。与存储任何卡片的完整副本不同,您只需存储5C、8D等内容。您的应用程序应该能够将其“解码”到完整对象中