c++ - 放置在游戏对象定义中的什么位置?

标签 c++ object

这听起来像是一个愚蠢的问题,但我不确定还有什么办法可以做到这一点。

在我的基于 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/

相关文章:

c++ - 为什么在这种情况下我尝试删除的 Treenode 没有被删除?

javascript - Python 2.7x 中是否有像 Javascript 中那样的对象传播语法?

perl - 为什么我不能在new里面初始化成员变量?

python - AttributeError: 'str' 对象没有属性 'courseGrade'

javascript - 使用Async/Await调用Async函数给对象中的key赋值

c++ - 内存泄漏——释放和删除

c++ - 错误在哪里,为什么这个程序是错误的?

c++ - chrome 原生消息 : can a native host executable start with arguments?

javascript - 有什么方法可以在不创建新的单独数组的情况下将现有的 Javascript 对象转换为数组?

c++ - 是否可以将类型映射到整数?