【发布时间】:2014-03-18 18:00:21
【问题描述】:
我是一名 C++ 初学者,正在制作我的第一个 2d 游戏(只是为了学习该语言的基础知识,我不打算做任何大事 :P)。我遇到了第一个问题,在互联网上找不到解决方案: 实体有一个主类:
class entity
{
//something there
};
还有一些用于具体怪物、玩家等的派生类。
class zombie : public entity
{
//...
};
class mutant : public entity
...
class player : public entity
...
现在的问题是如何为所有类型的实体创建一个数组(或一些容器/任何东西)?我的意思是,如果所有怪物和玩家对象都来自“实体”类,例如,碰撞会很简单:
std::vector<entity> entityTbl;
entityTbl.push_back( entity(...) );
...
entityTbl.push_back( entity(...) );
for(int i=0;i<entityTbl.end();i++)
for(int k=0;k<entityTbl.end();k++)
entityTbl[i].collision(entityTbl[k]); //some collision function
但是,如果我有不同类型的“zombie”、“mutant”、“player”......在这种情况下,我不能再使用“实体”容器了,原因有两个:
- 我希望“类实体”是抽象的
- 如果我使用这个容器来制作例如播放器对象,我不能使用“类播放器”中的函数。
我希望你能明白我的意思。 :) 感谢您的帮助建议,对任何语言错误深表歉意 - 英语不是我的母语。
【问题讨论】:
-
C++ 区分大小写。
-
改用
std::vector<entity*>或者更好的std::vector<std::shared_ptr<entity> >。但是您需要先修复许多其他错误才能使您的代码可编译。
标签: c++ loops entity main collision