【问题标题】:c++ array with multiple objects具有多个对象的c ++数组
【发布时间】:2014-03-02 08:40:27
【问题描述】:

所以我正在创建一个简单的游戏地图,初始化如下:

char map[MAP_SIZE][MAP_SIZE];

现在,如您所见,现在它只是字符。问题是,我希望地图改为保存不同类型的对象。这是我到目前为止所做的,但我想看看是否有更有效的方法(可能有)。

class Treasure{};
class Chest{};
class Enemy{};
class Grunt : public Enemy{};
class Lieutenant : public Enemy{};
class Boss : public Enemy{};
class Final_Boss : public Enemy{};
class Secret_Room{};
class Map_Level{};

struct Entity
{
   char display_char; //Simple character that is displayed on the the map
   Treasure *t;
   Chest *c;
   Grunt *g;
   Lieutenant *l;
   Boss *b;
   Final_Boss *f;
   Secret_Room *s;
   Map_Level *u;
   Map_Level *d;
};

Entity map[MAP_SIZE][MAP_SIZE];

我想过只检查 display_char 并根据它的内容,删除我不需要的对象指针,但这似乎是很多不必要的工作。我希望这个问题足够清楚,并希望能提供任何帮助找出最好的方法。

【问题讨论】:

  • 你可以让所有东西都继承基类Entity,而只拥有Entity map[][]
  • @awesomeyi:嗯,它必须是实体指针,否则你会切片。

标签: c++ object struct multidimensional-array


【解决方案1】:

假设每个map 条目只需要一个敌人,您可以只拥有一个Enemy *,而不是拥有Grunt, Lieutenant 的整个列表,等等。

【讨论】:

  • 这给了我一个对我有很大帮助的想法。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-11
  • 1970-01-01
  • 2021-01-14
  • 2022-06-15
  • 1970-01-01
相关资源
最近更新 更多