2

我在做游戏。我计划有 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;
};
4

1 回答 1

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; }    
}
于 2013-08-18T17:33:44.073 回答