为了学习和娱乐,我决定使用课程创建一个迷你版的星际2。我创建了一个ProtossUnit基类和两个派生类Zealot和Stalker。现在我试图找出实施攻击的最佳方法(损坏另一个单位)。
我在ProtossUnit基类中包含了一个函数,但也许有更优雅/更好的方法,比如创建类攻击。我相信这可以让我更多地定制攻击(包括升级/攻击速度等)。我想将Attack类的继承赋予派生类,因为它们保存了损坏统计数据?
任何帮助表示感谢。
class ProtossUnit {
protected:
int psishield, health, armor;
int mineralcost, gascost;
public:
int getHealth() { return health; }
int getPsiShield() { return psishield; }
int getArmor() { return armor; }
};
class Zealot : public ProtossUnit {
public:
string attacktype;
int damage, attackspeed;
Zealot() {
attacktype = "Psi Blades";
psishield = 50;
health = 100;
damage = 8 * 2;
attackspeed = 1.2;
mineralcost = 100;
gascost = 0;
}
};
class Stalker : public ProtossUnit {
public:
string attacktype;
int damage, attackspeed;
Stalker() {
attacktype = "Ranged";
psishield = 80;
health = 80;
damage = 10;
attackspeed = 1.44;
mineralcost = 125;
gascost = 50;
}
};
class Attack {
private:
string attackName;
int damage, attackspeed;
public:
Attack(string aName, int dmg, int aspeed) {
attackName = aName;
damage = dmg;
attackspeed = aspeed;
}
};
答案 0 :(得分:1)
首先,重要的是要意识到有许多可能的设计。在我的脑海中,我认为一个单位将具有攻击另一个单位的能力(方法),所以也许它将目标作为一些参数。然后根据攻击,你可以做一些随机的东西(字面意思,生成概率结果)并根据目标单位的健康(或w.e)进行调整。这是攻击类可能发挥作用的地方:如果一个单位有很多不同的攻击,或者不同的单位共享攻击,那么一个具有一些一般行为的可重用攻击类可能会有所帮助。没有错误的答案。