第4章 モジュール分割

3章までで、基本的なプログラムは作成できた。しかし、WinMain.cppの中にすべての関数が存在するため、非常に巨大なソースになってしまった。
このプログラムを元に何かゲームを作ることを考えたとき、今よりもさらに巨大化し、メンテナンスが相当大変になることは容易に想像できる。
この章では、基本プログラムを処理単位ごとにモジュール分割し、開発&メンテナンスしやすいプログラムを作成する方法を学ぶ。

前準備

  1. 第3章までのプロジェクトを、DDrawSamp02という名前でコピーする。
    (DDrawSamp01はバックアップとして保存しておく)
  2. プログラムを統一するため、WinMain.cppをダウンロードし、DDrawSamp02のWinMain.cppと入れ替える。
  3. プロジェクトを開き、リビルドを行い、プログラムが正常に動くことを確認する。

4-1 モジュール分割の考え方

現在のWinMain.cppにはすべての関数が入っている。役割別に考えると、どのようになるだろうか。

1.Windows基本関数(WinMain、WinProc、InitApp、UpdateFrame)
ウィンドウの生成と表示、ゲームループ内で実行する関数の振り分けを行う。UpdateFrame関数以外は更新(修正)することはほとんどない。
2.DirectDraw関係(InitializeDraw、ReleaseDraw、InitFail)
ウィンドウモードの設定と、DirectDrawオブジェクトの生成・初期化・開放を行う。ビットマップ画像を増やすとき以外は更新しない。
3.スタート処理(StartInit、StartFrame)
スタート画面の表示を行う。作成するゲームによっていろいろ変わる。
4.ゲーム処理(GameInit、GameFrame)
ゲーム画面の表示を行う。作成するゲームによっていろいろ変わる。

つまり、頻繁に更新しなければならない関数は固定されていて、それ以外の関数を更新することはあまりないことが分かる。それならば、頻繁に更新するものと更新されないものをソース分割し、見やすいプログラムは作れないだろうか?
ということで、役割別に分割してみる。

[復習]

プログラムの分割について分からない人は、C言語入門第11章「変数の通用範囲」で再確認しよう。


[ TOP ]