我正在为纸牌游戏编写模拟器。我正在尝试编码移动生成器。我有一个基类“卡”,我从中得到每张卡(大约150个不同的卡)。它们非常具体,所以我不能在一个类中实现它们(我不想使用任何脚本语言)。
我需要(想要)做什么: 代码150类来自“卡”。现在我需要在运行时生成新对象并将它们推入我的主板。
例如:
std::vector<Card*> board;
board.push_back(new Card132());
那么我怎么能做到这一点 - 因为我需要在运行时决定 我需要生成哪个对象(来自哪个类)?
提前致谢。
答案 0 :(得分:0)
代码必须能够自己决定生成哪张卡。
if (want to generate card 1)
{
board.push_back(new Card1());
}
else if (want to generate card 2)
{
board.push_back(new Card2());
}
else if ...
答案 1 :(得分:0)
使用工厂模式。
每个类的对象都是静态实例化的,并在具有名称的映射中注册自己。所有类都来自同一个基础。
如果要构建特定类型的对象,请将其名称传递给工厂,查找类型,生成新类型并通过基础指针对象返回。
添加新卡就是编写一个新类并让它在工厂注册其名称的问题。