警告:从别人经验的问题:)
嗨,
我正在太空侵略者的一个家庭作业实物模型和我工作的船舶和外国人将火/下降的子弹。 我有一个抽象基类来处理所有的子弹,有两个派生类 - 导弹和炸弹。
我原来使用的载体,但我读的地方,列表会更有效,因为它们将增加,因此迅速取出(?)。 不过,我是新来的名单,我有一点与它的麻烦。 说实话,我不是很确定我如何或是否可以在所有使用列表与抽象类。
因为我想获得导弹第一级工作我还没有实现,炸弹类呢。
这里的基类(喷丸)+导弹作为例子的头:
enum attackType { BOMB, MISSILE };
class shot
{
private:
float xPos,
yPos;
attackType bombOrMissile;
public:
shot(Vector2f pos, attackType b_OR_m); // passed ship pos + who fired shot
virtual void draw(RenderWindow & win) = 0; // draws bullet on screen
virtual Sprite & getSprite() = 0; // gives sprite information
};
class missile : public shot
{
private:
Sprite missileSprite;
public:
missile(Vector2f pos, Texture & t);
void draw(RenderWindow & win);
Sprite & getSprite();
};
我有一个控制子弹的列表中的“射击经理”级。 它递增/递减列表并改变精灵的位置。
标题:
class shotMgr
{
private:
list<shot*> shotsFired;
Texture missileTexture;
public:
shotMgr(); // loads texture
void shoot(attackType b_OR_m, Vector2f pos);
void disappear();
void move();
void draw(RenderWindow& win);
int getAmountFilled() { return shotsFired.size(); }
};
我的主要问题是:我怎么能去这里的语法? 我发现了自己扭起来试图解决的师生比。 是一个向量,最终要在这种情况下,更好的选择,或者是有只是我做错了吗?
下面是我的shotMgr功能之一来证明目前我在做什么(它不会编译); 其他的功能是相似的,语法:
void shotMgr::disappear()
{
list<shot>::iterator iter;
for (iter = shotsFired.begin(); iter != shotsFired.end();)
{
if (iter->getSprite().getPosition().y < 0)
{
iter = shotsFired.erase(iter);
}
else
iter++;
}
}
任何建议将不胜感激。 谢谢!