1

我在为我创建的游戏设计类时遇到问题。

在我的应用程序中,有:

  • 包含有关游戏本身的所有信息的类CGame,例如屏幕宽度、屏幕高度等。在main()函数中,我创建了一个指向CGame实例的指针。
  • CGUIObject包含指定其位置和方法的字段的 类draw(),它应该知道如何根据屏幕大小绘制对象。
  • CGUIManager,它是一个单例,它包含一个 CGUIObject's 列表。对于列表中的每个对象,它只调用draw() 方法。

为了清楚起见,我将放一些简单的代码:

class CGame
{  
   int screenWidth;
   int screenHeight;
};

class CGUIObject
{
   CPoint position;
   void draw();     // this one needs to know what is a screen's width and height
};

class CGUIManager   // it's a singleton
{
   vector<CGUIObject*> guiObjects;
   void drawObjects();
};

和 main.cpp:

CGame* g;

int main()
{
   g = new CGame();

   while(1)
   {
      CGUIManager::Instance().drawObjects();
   }

   return 0;
}

现在的问题是,每个人都CGUIObject需要知道由 持有的屏幕大小,但我发现在每个对象CGame中包含指向实例的指针非常愚蠢。CGame

请任何人告诉我实现这一目标的最佳方法是什么?

4

1 回答 1

1

您是否有理由需要您的屏幕分辨率CGUIObject

它们已经有了一个位置,所以如果你让它们在本地空间中绘制自己,你可以在你的空间中对它们应用一个变换CGUIManager来布置它们。您可以通过这种方式从 GUI 对象本身中抽象出您的布局,并且对象不需要知道它们所在的容器(屏幕、窗口、选项卡等)。

于 2012-11-21T13:49:54.580 回答