我为我创建的游戏设计课程时遇到了问题。
在我的应用中,有:
CGame
,其中包含有关游戏本身的所有信息,
例如屏幕宽度,屏幕高度等。main()
功能I
创建指向CGame
实例的指针。CGUIObject
,其中包含指定其位置和的字段
draw()
方法,它应该知道如何根据绘制对象
屏幕尺寸。CGUIManager
这是一个单例,它包含一个列表
CGUIObject
的。对于列表中的每个对象,只需调用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
实例的指针非常愚蠢。
有人可以告诉我实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
是否有理由要求CGUIObject
的屏幕分辨率?
他们已经有了一个位置,所以如果你让他们在当地空间画画,你可以在你的CGUIManager
中对他们进行变换以便将它们展开。您可以通过这种方式从GUI对象本身抽象布局,并且对象不需要知道它们所在的容器(屏幕,窗口,选项卡等)。