C ++在游戏中实现攻击类

时间:2012-08-21 03:46:11

标签: c++ class inheritance

为了学习和娱乐,我决定使用课程创建一个迷你版的星际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;
    }

};

1 个答案:

答案 0 :(得分:1)

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