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

标签 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;
    }

};

最佳答案

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

关于C++ 在游戏中实现攻击类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12048180/

相关文章:

c++ - 相同的结果 qsort 与 std::sort

c++ - 即使初始要求为真,也不会进入 for 循环

c# - 为额外信息创建通用类成员

inheritance - “base”值只能用于直接调用覆盖成员的基本实现

c++ - 继承和方法重载

c++ - while 循环中的 if/else 格式

C++ 通用函数参数(不同的参数)

python - 为什么要记住类属性?

PHP:速记开关

javascript - 了解 JavaScript 中的原型(prototype)继承