如何在Polymorphism c ++中实现这个类?

时间:2013-08-18 17:29:23

标签: c++ class oop polymorphism

我正在制作游戏。我计划有4种敌人类型。我已经为其中一个上课了。

我是C ++的新手,我总是对多态性以及如何以及何时使用它感到困惑。

我需要知道如何创建一个类,作为所有4个敌人类的基础。

我知道使用OOP,其中一个优点是使用的代码更少,这意味着它的效率更高。我并不是真的要求你为我编写一个完整的类,只是问我在这种情况下如何使用多态。这是4个敌人类别中的1个。 (没有多态性,它们看起来完全相同,唯一会改变的是chanceOfLoss变量)

class Punk
{
    public:
        Punk(Player player)
        {
            chanceOfLoss = 50;
            this->player = player;
        }
        bool Fight()
        {
            chanceOfWin = chanceOfLoss + player.GetWeapon();
            randNum = 1 + rand() % 100;

            if (randNum <= chanceOfWin)
            {
                return true;
            }
            return false;
        }
    private:
        Player player;
        int chanceOfLoss;
        int randNum;
        int chanceOfWin;
};

1 个答案:

答案 0 :(得分:2)

以下是在这种情况下如何使用多态性的示例。 您应该考虑它是否是最佳选择,具体取决于所有设计考虑因素。

class BaseEnemy将成为你敌人的基类。每个敌人类型都将从中继承,并覆盖getChanceofLoss方法。 所有敌人将共享相同的Fight方法

class BaseEnemy
{
public:
   bool Fight()
   {
      chanceOfWin = getChanceOfLoss() + player.GetWeapon();
      ...
   }
   virtual int getChanceOfLoss() = 0;
}

class Punk: public BaseEnemy
{
public:
   virtual int getChanceOfLoss() { return 60; }    
}