■ 新・ゲーム開発講座 |
■ へっぽこプログラミング入門♪ |
■第2夜:フルスクラッチスケルトン 前回コンパイルした test1.cpp は、窓を開くだけで他には何もできないプログラムでした。余計なものを省いて、プログラムとして成立する最低限の骨格だけしか記述していませんので当然と言えば当然です(笑)。このような骨格プログラムを「スケルトン」と呼びます。コンパイラにお任せで作ってしまうと盛りだくさんでゴージャス?なものになりがちですので、ここは手書きで簡素に行きたいと思います。ただし、最低限の記述とは言っても、キャプションバーのボタンを押せば最大化/最小化したり終了できたり・・・というWindowsシステムの恩恵は受けることができます。 さて、では test1.cpp の中身を見ていきましょう。このスケルトンは3つの関数で構成されています。
このうち、Mainloop() は後日の拡張のために WinMain()から分離したループ処理部分です(ですから test1.cpp ではまったくの空っぽです)。WndProc()はキー入力その他のイベント処理部分、WinMain()はプログラム起動時の初期化とメッセージループ処理を担当します。それぞれの働きをイメージ的に表現すると、下図のようになります (細かいことは無視して、まあこんな感じなんだなーと思って頂ければ結構です)
メッセージ処理が行われない場合は、Mainloop() がひたすら繰り返し呼び出される構造になっています。ジェット戦闘機の「タッチ&ゴー」みたいな動作だと思っていただければ良いと思います。逆に言うと、ここであまりにも長時間を要する処理を記述してしまうと、プログラムそのもののレスポンスが下がってしまうことにもなります(場合によってはハングアップのような状態になることも
^^;)。その意味では、遅延処理やループ処理のようなものは記述方法を工夫する必要がありそうですね。実際、その通りです。
次回以降、もう少しスケルトンの内容を詳しく見ていきましょう。 |