0

为了学习和娱乐,我决定使用类创建一个迷你版的星际争霸 2。我创建了一个 ProtossUnit 基类和两个派生类 Zealot 和 Stalker。现在我正试图找出实施攻击的最佳方法(损坏另一个单位)。

我在 ProtossUnit 基类中包含了一个函数,但也许有更优雅/更好的方法,例如创建一个 Class Attack。我相信这将允许我对攻击进行更多的自定义(包括升级/攻击率等)。我正在考虑将 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;
    }

};
4

1 回答 1

1

首先,重要的是要认识到有许多可能的设计。在我的脑海中,我认为一个单位将有能力(方法)攻击另一个单位,所以也许它将目标作为一些参数。然后根据攻击,您可以做一些随机的事情(字面意思是生成概率结果)并根据目标单位的健康(或我们)进行调整。这就是攻击类可能发挥作用的地方:如果一个单位有很多不同的攻击,或者不同的单位共享攻击,那么具有一些一般行为的可重用攻击类可能会有所帮助。没有错误的答案。

于 2012-08-21T04:05:48.367 回答