c++ - 在 C++ 中,如何循环访问类对象

  显示原文与译文双语对照的内容
120 4

我的问题是,我如何才能为所有敌人战斗只有 1个函数?

现在我创建我的敌人,写 Enemy ( 类) 并给它 object + number 名称,然后给出一些输入,它看起来像:

Enemy object1(1, 20, '/',"AQUA", 1);
Enemy object2(5, 40, '/',"YELLOW", 2);
Enemy object3(10, 60, '/',"WHITE", 3);

然后我有一个战斗的运行时,我运行了一个糟糕的循环:

while (object1.getHp()> 0)

运行我的战斗代码。

所以现在我需要一个战斗函数来运行所有不同的敌人,我已经尝试了很多东西,但似乎没有工作。关于我可以做什么?

声音和看起来很笨,但我真的不能猜到任何事情,已经丢失了大量的时间寻找解决方案。

时间:原作者:0个回答

106 3

你需要的是一个容器,可以保存你的实例实例或者指针。大多数容器都是模板化类,必须键入。其中之一是矢量 ( 连续的'列表'),它可以在你的案例中创建

  • std::vector<Enemy>: 保存完整对象的'列表'
  • std::vector<Enemy*>: 保存指向对象的指针的'列表'

如果你从对象中获取引用,请执行以下操作:

std::vector<Enemy*> enemies;
enemies.push_back(&object1);
enemies.push_back(&object2);
enemies.push_back(&object3);

如果你不熟悉指针,你可以在这里看到 ,尽管它首先可以能有点不透明。

原作者:
109 0

请找出下面的粗略说明来解决你的问题。

  • 将所有对象存储在 array 或者高级结构中,如向量。
  • 设置一个标志来指示是否至少有一个敌人活着
  • 只要标记保持为 true,就运行一个while循环
    • 将标志设置为 false
    • 对于 array 中的每个对象,
    • 检查健康点是否超过零
      • 然后执行你的行动
      • 将平面设置为 true

那就是。

原作者:
...