中〜大規模な設計においてはmain.cppになんでも詰め込むわけにはいきません。そこで、まずソースコードの骨格を作ります。main.cppにはほとんど書くことがありません。{system.main();}system.finalize();}DXライブラリに関するあれこれ必要な処理をしてくれるクラスをSystemMainと名付けました。DXライブラリをある程度使ったことがある方なら分かる通り、処理はwhile文内をぐるぐるまわり、その中で必要な処理を制御していきます。このぐるぐるまわす部分をよく「looper」と呼びます。DXライブラリの面倒な処理は全部SystemMainがやり、グルグル回る部分をLooper.loop()がやるように設計してみます。32;//色のbit数。3.141592654f;//円周率SystemMainではDXライブラリ関連の処理をしています。initializeでは見慣れない関数がいくつかあるかもしれませんが、特にスルーして構いません。DXライブラリの細かい関数の使い方は必要になった時にリファレンスを見ればよいです。SystemMainはinitialize処理が終わった後は、ひたすらLooper.loop()を呼び出しているだけです。loopが偽を返して来たらループを抜けてゲームを終了します。ゲームに必要な処理はこのLooper.loop()内に書いていくことになります。ゲーム内で共通して参照したい定義もあります。ウィンドウサイズ等は色んな所から参照したい定義です。ここでDefineクラスを定義しました。ここに必要な定義を追加していきます。ポイントは.hの中には宣言のみにし、定義は.cppの方に書くことです。.hは変更するとインクルードしている全てのファイルがリコンパイル対象になります。ファイルがまだ数個のうちはよいですが、クラスが何百個にもなった時、定義値を一つ変えるだけでコンパイルに数分も待たなくてはならないようになってしまいます。このような場合変数の宣言のみを.hに書いておき、定義を.cppにすることで、.cppを変更してもリコンパイルされないので大幅にコンパイルが効率的になります。3.141592fのような記述をすることがありますが、これはやってはいけません。staticな定義をするべきです。C++を参照してください。DirectXの環境を始めとするDXライブラリのような環境ではdouble型には意味がありません。DirectXが勝手にFPUコントロールレジスタを変更してしまうためdoubleで計算してもfloatの精度に落ちてしまうのです。従ってDXライブラリのプロジェクトでdoubleを使う必要性はありません。計算精度に差は無いにも関わらず使用するメモリサイズが倍になっていいことが無いので全てfloatを利用して計算します。(※最近のDXライブラリは利用可能な場合はdouble型を有効にするのでDXライブラリの関数に渡さない限りは意味のある場合があるようですが本書では考えません)今回の実行結果は画面が2章よりちょっと大きくなった程度であまり変わりありません。最初にやらなければならないことが色々あり、見た目変化がなく面白くありませんが、しばしお付き合いください。次の章でLooperの中身を作り込んでいきましょう。