DirectX講座13回でまとめたプログラムを複数ファイルに分割してみます

13回でまとめた
SIZE(20){ COLOR(#ffaa00){・Direct3Dクラス}}
SIZE(20){ COLOR(#ffaa00){・Textureクラス}}
SIZE(20){ COLOR(#ffaa00){・Spriteクラス}}
SIZE(20){ COLOR(#ffaa00){・DirectSoundクラス}}
SIZE(20){ COLOR(#ffaa00){・Waveクラス}}
SIZE(20){ COLOR(#ffaa00){・SoundBufferクラス}}
を各種ヘッダー(.h)とソース(.cpp)のペアで分割してます

今回使うプログラムファイルは次のようになってます。どぞー(-ω-)つ旦
・&ref(direct3d.h);
・&ref(direct3d.cpp);
・&ref(texture.h);
・&ref(texture.cpp);
・&ref(sprite.h);
・&ref(sprite.cpp);
・&ref(directsound.h);
・&ref(directsound.cpp);
・&ref(wave.h);
・&ref(wave.cpp);
・&ref(soundbuffer.h);
・&ref(soundbuffer.cpp);
・&ref(winmain.cpp);
使っている素材はこちら(13回と変更なし)
・&ref(car.bmp);
・&ref(katana.wav);
・&ref(bomb.wav);
zipでほしい人はこちら
・&ref(framework.zip);

ファイルが一杯ですが処理の方の変更はありません
winmain.cppにWinMain関数があります
WinMain関数もmain関数同様プログラムの開始となる関数なので
SIZE(20){ COLOR(#ffaa00){プロジェクト1つにつき、WinMain関数は1つしか存在してはいけません}}
13回でまとめたクラスを全て別ファイルに分割しました
winmain.cppで分割したクラスのヘッダーを全てインクルードします
クラスを使うところの処理はまったく変わりません

 #include <Windows.h>
 #include <tchar.h>
 
 // 作ったヘッダーファイルを全部インクルード
 #include "direct3d.h"
 #include "texture.h"
 #include "sprite.h"
 #include "directsound.h"
 #include "wave.h"
 #include "soundbuffer.h"
 
 // ウィンドウプロシージャ、ウィンドウに対するメッセージ処理を行う
 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
 
 // ここより後のプログラムは13回とまったく変わらないので略・・・

分割したファイルですが
ヘッダーファイルには先頭に#pragma onceを書き
DirectXのヘッダーライブラリをインクルードし
クラス定義します

direct3d.hとdirect3d.cppを例にあげます

direct3d.hは次のようになります
 #pragma once
 
 //////////////////////////////////////////////////////////////
 // Direct3Dのヘッダーとライブラリ
 #define D3D_DEBUG_INFO	// Direct3Dデバックフラグ
 
 #pragma comment(lib, "d3d9.lib")
 #pragma comment(lib, "d3dx9.lib")
 #pragma comment(lib, "d3dxof.lib")
 #pragma comment(lib, "dxguid.lib")
 #pragma comment(lib, "winmm.lib")
 #include <comdef.h>
 #include <d3d9.h>
 #include <d3dx9.h>
 #include <mmsystem.h>
 //////////////////////////////////////////////////////////////
 
 // Direct3Dクラス
 class Direct3D
 {
 // クラスのメンバは13回と同じなので以下略


DirectX系のヘッダーファイルとライブラリは
各ヘッダーファイルごとに読み込まなければならないのでそこだけ追記します

どこかに各クラスのメンバ関数の実装をしなければならないため
ソースファイルを作成し、そこにクラスのメンバ関数を実装します
各クラスの定義が書かれたヘッダーファイルを読み込まなければメンバ関数が実装できません

今回、Direct3Dクラスの実装はdirect3d.cppに書きました

 #include "direct3d.h"
 
 // コンストラクタ
 Direct3D::Direct3D(){
 // クラスのメンバ関数の実装は13回と変更がないので以下略

他のクラスも同様に分割してあります

これは個人的な意見ですが1クラスに対し
クラスを定義するヘッダーファイルとそのクラスの実装のソースファイルをペアで作るといいと思います
そのほうが見やすいしファイルを探しやすいと思うので・・・
(こうしなければならない決まりはない)


結果は13回と変わらないので省略します

前:DirectX講座14回
次:DirectX講座16回

#vote( こんな講座で大丈夫か・・・?[4],大丈夫だ!問題ない[5],一番いい講座を頼む[4])
| こんな講座で大丈夫か・・・?|4|
|大丈夫だ!問題ない|5|
|一番いい講座を頼む|4|



トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS