我应该使用多个向量或枚举状态

时间:2013-11-26 21:02:10

标签: c++ vector enums

所以我正在开发一款简单的纸牌游戏。现在我正在使用大约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个不同的容器会更容易吗?

2 个答案:

答案 0 :(得分:3)

如果我要实现它,我宁愿创建一个甲板对象,一个玩家对象,并为游戏中的任何可能动作创建方法。在开始时做一些工作然后它会更容易处理。

P.s:数据结构应该通过您对卡片的操作来选择......例如,如果在您的游戏中你有很多疑问“甲板上有这张卡吗?”我会说使用地图而不是每次迭代超过50张卡片......所以答案取决于它。

答案 1 :(得分:3)

欢迎使用cpu time vs memory space vs code maintenance。

幸运的是,在这种情况下,cpu时间和内存空间的问题可以忽略不计。

但是,代码维护不是。

尝试维护三种不同的“堆叠”卡片并不是进行设计的最佳方式。这将给你一个非常明显的,即不明显的速度提升,但代码维护成本的增加使它甚至不值得。

你在做什么是正确的。

保持卡可以进入状态的枚举。如果您需要该状态下所有卡的列表,请迭代您的向量以查找处于该状态的卡。