这听起来像是一个愚蠢的问题,但我不确定还有什么办法可以做到这一点。
在我的基于 C++ ASCII 的 roguelike 中,我会有很多很多对象。每个分配的游戏中对象都有一些共同的属性。 (名称、大小、对象 ID、外观等)通常,我会为此使用静态变量,但这需要为每个对象创建一个新类和初始化程序。相反,我决定让每个分配的对象都包含一个指向给定 ObjectDef 的指针,然后我可以使用它来解决这个问题。当对象具有需要实现的新功能时,我将为给定的类型对象创建一个新类。
也就是说,我在哪里定义所有这些对象定义?我想将它们放在数组中,但我知道全局变量是坏的、坏的、坏的。
一些通用提示会很棒。谢谢。
class WorldObjectDef //WHAT WE HAVE A LIST OF
{
protected:
std::string m_name;
float m_size;
int m_type;
int m_id;
AsciiNode m_node;
public:
WorldObjectDef(std::string, float, int, int, const AsciiNode &);
int getId() const;
std::string getName() const;
float getSize() const;
AsciiNode getNode() const;
};
class WorldObject //WHAT'S ALLOCATED IN A LEVEL
{
WorldObjectDef * m_def;
public:
WorldObject(const WorldObjectDef &);
int getId() const;
std::string getName() const;
float getSize() const;
AsciiNode getNode() const;
};
我一直想知道的事情:类似 html 的代码标签有什么问题吗?天哪,每一行都要缩进空格。
最佳答案
我经常创建 List<> 来保存所有事件对象(即游戏中和正在使用的对象),这些对象可用于在一个循环中操作所有数据。 该列表可以在任何可见性足够高的地方定义。如果它需要是全局性的,那就这样吧。最好让代码正常工作,而不是考虑它是否以最大 fps 运行。
Dont use globals and gotos 是我记得读到的第一个警告。我并不是说您应该忽略这些警告,而是要了解为什么大规模使用 em 不是好的做法。
全局变量是不好的,因为它们一直存在直到程序存在或被手动处理。如果你有主循环,我认为你有,你应该在其中定义那些变量。
关于c++ - 放置在游戏对象定义中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8302024/