次のようなデザインでゲームエンジンを作ることを考えています。
主な特徴は、ゲームメニューとゲームレベルをカバーする、いわゆるシステムを作成することです。これらのシステムには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;
}
main関数はシステムを処理し、メニューとレベルを処理します。SayLevelOneはから派生していSystemます。
int main()
{
LevelOne Tutorial(&Window, &Input, ...);
Tutorial.Pause();
...
}
このようにして、私のコードは構造化され、(私の意見では)理解しやすくなります。しかし、主な機能はどのようにシステムと通信できるでしょうか?
たとえば、メニューは、ユーザーがレベルを選択したことをメイン機能にどのように伝えることができますか?また、どのレベルを選択しましたか?main関数にメニューを削除させ、新しいレベルのオブジェクトを作成させるため。