【发布时间】:2026-02-17 20:55:02
【问题描述】:
我正在制作游戏。我计划有 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;
};
【问题讨论】:
-
如果不同的敌人类型只是
chanceOfLoss的值不同,那么你不应该使用类型层次结构。如果敌人类型的行为不同,请使用类型层次结构。 -
我很同情 nosid 评论:在这种情况下不要使用继承,只需为
chanceOfLoss添加一个 setter 和一个 getter。 -
我认为您在这里混淆了核心 OOP 原则。 C++ 中的 [多态性][1] 使您能够在抽象上编程,而不是在实现上编程。 [继承][2] 使您能够为多个类编写通用功能。请参考以下问题:[链接][3]。 [1]:en.wikipedia.org/wiki/… [2]:en.wikipedia.org/wiki/… [3]:*.com/questions/10973949/…
标签: c++ class oop polymorphism