我正在制作游戏。我计划有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;
};
答案 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; }
}