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|