簡単な分割コンパイルについてやってみましょう。
まず、ゲームプログラミングの館の5節で紹介しているコードを用います。
これです。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
int White,Red,G_Blue;
White = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
Red = GetColor( 255 , 0 , 0 ) ; // 赤色の値を取得
G_Blue = GetColor( 0 , 255 , 255 ) ; // 緑と青の混合色の値を取得
DrawLine ( 10 , 10 , 630 , 10 , White ) ; // 線を描画
DrawBox ( 10 , 50 , 310 , 100 , G_Blue , FALSE) ; // 四角形を描画
DrawBox ( 10 , 150 , 310 , 200 , G_Blue , TRUE ) ; // 四角形を描画(塗りつぶし)
DrawCircle( 500 , 300 , 100 , Red , TRUE) ; // 円を描画(塗りつぶし)
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
DXライブラリのサンプル実行用フォルダにあるプロジェクトでいいので、これをコピペしてください。
これを分けてみますね。
真ん中の部分を抜き取って、draw_graph()という関数
void draw_graph(){
int White,Red,G_Blue;
White = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
Red = GetColor( 255 , 0 , 0 ) ; // 赤色の値を取得
G_Blue = GetColor( 0 , 255 , 255 ) ; // 緑と青の混合色の値を取得
DrawLine ( 10 , 10 , 630 , 10 , White ) ; // 線を描画
DrawBox ( 10 , 50 , 310 , 100 , G_Blue , FALSE) ; // 四角形を描画
DrawBox ( 10 , 150 , 310 , 200 , G_Blue , TRUE ) ; // 四角形を描画(塗りつぶし)
DrawCircle( 500 , 300 , 100 , Red , TRUE) ; // 円を描画(塗りつぶし)
}
を作り、他のファイルに移してみましょう。
まず、ソリューションエクスプローラーの
「DxLib_VC2005用」上で右クリックし「追加」>「新しい項目」を選びます。
左側で[コード]が選択されていることを確認し、右側でc++を選択し、名前は適当にtest2とでもしましょう。
出てきたtest2.cppの画面に、先ほど作った関数を書いてみます。
DxLib.hのインクルードはDXライブラリの関数を使うファイルでは全て呼ぶ必要があるので、
test2.cppとtest.cppの記述は以下のようになります。
--------------------test2.cpp--------------------
#include "DxLib.h"
void draw_graph(){
int White,Red,G_Blue;
White = GetColor( 255 , 255 , 255 ) ; // 白色の値を取得
Red = GetColor( 255 , 0 , 0 ) ; // 赤色の値を取得
G_Blue = GetColor( 0 , 255 , 255 ) ; // 緑と青の混合色の値を取得
DrawLine ( 10 , 10 , 630 , 10 , White ) ; // 線を描画
DrawBox ( 10 , 50 , 310 , 100 , G_Blue , FALSE) ; // 四角形を描画
DrawBox ( 10 , 150 , 310 , 200 , G_Blue , TRUE ) ; // 四角形を描画(塗りつぶし)
DrawCircle( 500 , 300 , 100 , Red , TRUE) ; // 円を描画(塗りつぶし)
}
--------------------------test.cpp-----------------------------------
#include "DxLib.h"
extern void draw_graph();
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode( TRUE ) ; // ウインドウモードに変更
if( DxLib_Init() == -1 ) return -1; // DXライブラリ初期化処理 エラーが起きたら終了
draw_graph();
WaitKey() ; // キーの入力待ち(『WaitKey』を使用)
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
---------------------------------------------------------------------
うまくいきました?
ちなみに、test.cppで書いている
extern void draw_graph();
はエクスターン宣言といって、違いファイルにある関数を違うファイルで呼ぶときに、
「どっかのファイルにこの関数がありますよ」と言うことを示すものです。
関数を呼ぶほうのファイルに書いてください。