我在为我创建的游戏设计类时遇到问题。
在我的应用程序中,有:
- 包含有关游戏本身的所有信息的类
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
请任何人告诉我实现这一目标的最佳方法是什么?