我考虑使用以下设计方法构建游戏引擎。
主要特点是创建所谓的系统,涵盖游戏菜单和游戏关卡。这些系统提供了诸如Window
绘图、Input
获取、Sound
播放以及可能Network
与服务器通信之类的对象。
class System // abstract class
{
Window* Window;
Input* Input;
...
System(Window* Window, Input* Input, ...)
{
this->Window = Window;
this->Input= Input;
...
}
virtual Pause() = 0;
virtual Resume() = 0;
}
主要功能处理系统因此菜单和级别。说LevelOne
是从System
.
int main()
{
LevelOne Tutorial(&Window, &Input, ...);
Tutorial.Pause();
...
}
这样我的代码就变得结构化并且(在我看来)易于理解。但是 main 函数如何与系统通信呢?
例如,菜单如何告诉主功能用户选择了一个级别,以及选择了哪个级别?为了让主函数删除菜单并创建一个新的关卡对象。