【发布时间】: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