gpt4 book ai didi

c++ - 如何在多态性 C++ 中实现此类?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:49:17 24 4
gpt4 key购买 nike

我正在制作游戏。我计划有 4 种敌人类型。我已经为他们中的一个开设了类(class)。

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

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

我知道使用 OOP 的优点之一是使用的代码更少,这意味着它非常高效。我并不是真的要你为我编写整个类的代码,只是问我如何在这种情况下使用多态性。这是 4 个敌人类别中的一个。 (如果没有多态性,它们看起来完全一样,唯一会改变的是 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;
};

最佳答案

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

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

关于c++ - 如何在多态性 C++ 中实现此类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18301818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com