所以我正在开发一款简单的纸牌游戏。现在我正在使用大约4个不同的Vector<Card>
容器来存放Deck,Hand,InPlay和Discard中的卡片。我正准备编写代码,在必要时将卡片从InPlay Vector转移到Discard Vector,我意识到我可以使用2个向量并枚举一组卡片状态来区分卡片在游戏领域的位置。< / p>
我在想这样的事情:
class Card
{
Enum class CardState
{
InHand,
InPlay,
Discarded
};
//other card class data
};
然后我可以遍历单个vector<Card> InPlay
并检查这些标志。甲板仍然是它自己的矢量容器。
在整个游戏过程中尝试管理3个不同的容器会更容易吗?
答案 0 :(得分:3)
如果我要实现它,我宁愿创建一个甲板对象,一个玩家对象,并为游戏中的任何可能动作创建方法。在开始时做一些工作然后它会更容易处理。
P.s:数据结构应该通过您对卡片的操作来选择......例如,如果在您的游戏中你有很多疑问“甲板上有这张卡吗?”我会说使用地图而不是每次迭代超过50张卡片......所以答案取决于它。
答案 1 :(得分:3)
欢迎使用cpu time vs memory space vs code maintenance。
幸运的是,在这种情况下,cpu时间和内存空间的问题可以忽略不计。
但是,代码维护不是。
尝试维护三种不同的“堆叠”卡片并不是进行设计的最佳方式。这将给你一个非常明显的,即不明显的速度提升,但代码维护成本的增加使它甚至不值得。
你在做什么是正确的。
保持卡可以进入状态的枚举。如果您需要该状态下所有卡的列表,请迭代您的向量以查找处于该状态的卡。