3章までで、基本的なプログラムは作成できた。しかし、WinMain.cppの中にすべての関数が存在するため、非常に巨大なソースになってしまった。
このプログラムを元に何かゲームを作ることを考えたとき、今よりもさらに巨大化し、メンテナンスが相当大変になることは容易に想像できる。
この章では、基本プログラムを処理単位ごとにモジュール分割し、開発&メンテナンスしやすいプログラムを作成する方法を学ぶ。
- 第3章までのプロジェクトを、DDrawSamp02という名前でコピーする。
(DDrawSamp01はバックアップとして保存しておく)- プログラムを統一するため、WinMain.cppをダウンロードし、DDrawSamp02のWinMain.cppと入れ替える。
- プロジェクトを開き、リビルドを行い、プログラムが正常に動くことを確認する。
現在のWinMain.cppにはすべての関数が入っている。役割別に考えると、どのようになるだろうか。
- 1.Windows基本関数(WinMain、WinProc、InitApp、UpdateFrame)
- ウィンドウの生成と表示、ゲームループ内で実行する関数の振り分けを行う。UpdateFrame関数以外は更新(修正)することはほとんどない。
- 2.DirectDraw関係(InitializeDraw、ReleaseDraw、InitFail)
- ウィンドウモードの設定と、DirectDrawオブジェクトの生成・初期化・開放を行う。ビットマップ画像を増やすとき以外は更新しない。
- 3.スタート処理(StartInit、StartFrame)
- スタート画面の表示を行う。作成するゲームによっていろいろ変わる。
- 4.ゲーム処理(GameInit、GameFrame)
- ゲーム画面の表示を行う。作成するゲームによっていろいろ変わる。
つまり、
頻繁に更新しなければならない関数は固定されていて、それ以外の関数を更新することはあまりないことが分かる。それならば、頻繁に更新するものと更新されないものをソース分割し、見やすいプログラムは作れないだろうか?
ということで、役割別に分割してみる。[復習]
プログラムの分割について分からない人は、C言語入門第11章「変数の通用範囲」で再確認しよう。