次のようなデザインでゲームエンジンを作ることを考えています。
主な特徴は、ゲームメニューとゲームレベルをカバーする、いわゆるシステムを作成することです。これらのシステムには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関数にメニューを削除させ、新しいレベルのオブジェクトを作成させるため。