えーと、最近プログラミングを勉強しているこんたですハロー
えっとね、ゲームを作ろうと思って、なんかいい方法ないかなーとぐーぐる先生に聞いてたら、
DXライブラリってのを見つけてですね・・。
「関数」っていうのが沢山あるので、ここを参考にしながら自分のメモ用にまとめを作ることにしました。
DXライブラリ準備:
#include "DxLib.h" //DXライブラリをインクルード
↓
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ //メイン関数
DxLib_Init(); // DXライブラリ初期化処理
//ここにプログラムを書く
DxLib_End(); //これでDXLib.終了。
return 0; //プログラム終了。
}
//※DxLib_Init();←絶対忘れないこと。
関数:
ウィンドウモード設定関数→ ChangeWindowMode(引数);
//TRUEの場合:ウィンドウモード
//FALSEの場合:フルスクリーンモード
※メイン関数のすぐ後に書くこと。
画像を描画する関数→ LoadGraphScreen(int x, int y, char *GraphName, int TransFlag);
//x, y ロードした画像を描画する左上頂点の座標
//*GraphName ロードする画像パスの文字列があるポインタ
//TransFlag 透過色を有効にするか(TRUEで有効、FALSEで無効)
※座標について 一番左上が0,0 横がx座標, 縦がy座標
画像のロードの仕方が、HDD→メモリ→描画 のため、テスト時以外あまりお勧めできない関数。
通常は、下のLoadGraph関数とDrawGraph関数を組み合わせて使う。
画像をロードする関数→ LoadGraph(char *FileName);
//FileName ファイル名(場所)
戻り値(int): -1 : エラー発生。
-1以外: グラフィックのハンドル ※ハンドルとは:識別番号てきな。
LoagGraphを描画する関数→ DrawGraph(int x, int y, int GrHandle, int TransFlag);
//x, y ロードした画像を描画する左上頂点の座標
//GrHandle 描画するグラフィックのハンドル
//TransFlag 透過色を有効にするか(TRUEで有効、FALSEで無効)
※座標について 一番左上が0,0 横がx座標,縦がy座標
LoadGraph関数とDrawGraph関数を組み合わせて使用する例:
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode( TRUE ); // ウィンドウモードに設定
DxLib_Init(); // DXライブラリ初期化処理
int Handle; // データハンドル格納用変数
Handle = LoadGraph( "画像/キャラクタ00.png" ); // 画像をロード
DrawGraph( 50, 100, Handle, TRUE ); // データハンドルを使って画像を描画
WaitKey(); // キー入力があるまで待機
DxLib_End(); // DXライブラリ終了処理
return 0;
}
特定キーの入力状態を得る関数→ CheckHitKey(int KeyCode);
//KeyCode 入力状態を取得するキーコード
戻り値:1:押されている
0:押されていない
使用例: while( 1 ){
ProcessMessage();
if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 ){
break;
}
}
※ProcessMessage();はエラーが発生しないために使用。詳しくはいつか。
すべてのキーの入力状態を取得する関数→ GetHitKeyStateAll(char *KeyStateBuf);
//KeyStateBuf すべてのキーの押下状態を格納するバッファのポインタ
※キーは全部で256種なので必ずchar key[256];を。
使用例(Zキーが押されているかどうかを見る):
#include "DxLib.h"
int Key[256]; // キーが押されているフレーム数を格納する
// キーの入力状態を更新する
int gpUpdateKey(){
char tmpKey[256]; // 現在のキーの入力状態を格納する
GetHitKeyStateAll( tmpKey ); // 全てのキーの入力状態を得る
for( int i=0; i<256; i++ ){
if( tmpKey[i] != 0 ){ // i番のキーコードに対応するキーが押されていたら
Key[i]++; // 加算
} else { // 押されていなければ
Key[i] = 0; // 0にする
}
}
return 0;
}</font>
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定
int x=0;
// while(裏画面を表画面に反映, メッセージ処理, 画面クリア, キーの状態更新)
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && gpUpdateKey()==0 ){
DrawFormatString( x, 0, GetColor(255,255,255), "?!" ); //x,0 の位置に白で ?! を描画
if( Key[KEY_INPUT_RIGHT] == 1 ){ // 右キーが押された瞬間なら
x = x + 50; // xを50加算
}
}
DxLib_End(); // DXライブラリ終了処理
return 0;
}
画面に描いた内容を消す関数→ ClearDrawScreen();
・ループの時にProcessMessage();と一緒に置くだけでおk。
描画先を裏画面にする関数→ SetDrawScreen( DX_SCREEN_BACK );
※主にDxLib_Init();の後に置く。
裏画面を表画面に反映させる関数→ ScreenFlip();
画像を回転・拡大縮小表示する関数→ DrawRotaGraph(int x, int y, double ExtRate, double Angle, int GrHandle, int TransFlag);
//x, y グラフィックを描画する領域の中心座標
//ExtRate 拡大率(1.0で等倍)
//Angle 描画角度(ラジアン(※)指定)
//GrHandle 描画するグラフィックのハンドル
//TransFlag 透明色を有効にするか(TRUEで有効FALSEで無効)
※角度は孤度法 孤度法ではπ=180゜なので#define PI 3.141592654をすると便利
透明度を画像全体にブレンドする関数→ SetDrawBlendMode(int BlendMode, int Pal);
//BlendMode DX_BLENDMODE_NOBLEND : ノーブレンド(デフォルト)
// DX_BLENDMODE_ALPHA : αブレンド
// DX_BLENDMODE_ADD : 加算ブレンド
//Pal 描画ブレンドモードのパラメータ(0~255)
// 0で完全に見えない 255で今までと同じ。
画像を分割読み込みする関数→ LoadDivGraph(char *FileName, int AllNum,int XNum, int YNum, int XSize, int YSize, int *HandleBuf);
//FileName ファイル名(ポインタ)
//AllNum 画像の分割総数
//XNum ,YNum 横方向の画像の数、縦方向の画像の数
//SizeX ,SizeY 画像1つの横サイズ、画像1つの縦サイズ
//HandleBuf 画像ハンドルを格納する配列のアドレス
格納される順序 [0] [1] [2] [3]
[4] [5] [6] [7]
[8] [9] [10] [11]
[12] [13] [14] [15]
文字を描画する関数→ DrawFormatString(int x, int y, int Color, char *FormatString, ... );
//x, y 文字列を描画する起点座標
//Color 描画する文字列の色 ※GetColor関数で色コード取得
//*FormatString 描画したい書式付き文字列のアドレス
//... 書式付き文字列に付随する引数(Printf的な。)
色コードを取得する関数→ GetColor(int Red, int Green, int Blue);
//Red, Green, Blue 取得したい色の各輝度値(0~255)
ランダム数値を返す関数→ GetRand(int RandMax);
//RandMax 取得する乱数の最大値
戻り値:0~RandMax
乱数の初期値を設定する関数→SRand(int n);
//n 何でもおk。
音声ファイルを読み取って識別番号を返す関数→ LoadSoundMem(char *FileName);
//メモリに読みこむ音声ファイル名の文字列のポインタ
//wav, mp3, ogg が読み込める Mp3はライセンスが@fps@grで危険
読み取った音声ファイルを再生する関数→ PlaySoundMem(int SoundHandle, int PlayType);
//Sound Handle 再生する音の識別番号(サウンドハンドル)
//PlayType 再生モード
// DX_PLAYTYPE_NORMAL ノーマル再生(※)
// DX_PLAYTYPE_BACK バックグラウンド再生
// DX_PLAYTYPE_LOOP ループ再生
※ノーマル再生は再生が終わるまで処理が止まる
えっとね、ゲームを作ろうと思って、なんかいい方法ないかなーとぐーぐる先生に聞いてたら、
DXライブラリってのを見つけてですね・・。
「関数」っていうのが沢山あるので、ここを参考にしながら自分のメモ用にまとめを作ることにしました。
DXライブラリ準備:
#include "DxLib.h" //DXライブラリをインクルード
↓
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ //メイン関数
DxLib_Init(); // DXライブラリ初期化処理
//ここにプログラムを書く
DxLib_End(); //これでDXLib.終了。
return 0; //プログラム終了。
}
//※DxLib_Init();←絶対忘れないこと。
関数:
ウィンドウモード設定関数→ ChangeWindowMode(引数);
//TRUEの場合:ウィンドウモード
//FALSEの場合:フルスクリーンモード
※メイン関数のすぐ後に書くこと。
画像を描画する関数→ LoadGraphScreen(int x, int y, char *GraphName, int TransFlag);
//x, y ロードした画像を描画する左上頂点の座標
//*GraphName ロードする画像パスの文字列があるポインタ
//TransFlag 透過色を有効にするか(TRUEで有効、FALSEで無効)
※座標について 一番左上が0,0 横がx座標, 縦がy座標
画像のロードの仕方が、HDD→メモリ→描画 のため、テスト時以外あまりお勧めできない関数。
通常は、下のLoadGraph関数とDrawGraph関数を組み合わせて使う。
画像をロードする関数→ LoadGraph(char *FileName);
//FileName ファイル名(場所)
戻り値(int): -1 : エラー発生。
-1以外: グラフィックのハンドル ※ハンドルとは:識別番号てきな。
LoagGraphを描画する関数→ DrawGraph(int x, int y, int GrHandle, int TransFlag);
//x, y ロードした画像を描画する左上頂点の座標
//GrHandle 描画するグラフィックのハンドル
//TransFlag 透過色を有効にするか(TRUEで有効、FALSEで無効)
※座標について 一番左上が0,0 横がx座標,縦がy座標
LoadGraph関数とDrawGraph関数を組み合わせて使用する例:
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode( TRUE ); // ウィンドウモードに設定
DxLib_Init(); // DXライブラリ初期化処理
int Handle; // データハンドル格納用変数
Handle = LoadGraph( "画像/キャラクタ00.png" ); // 画像をロード
DrawGraph( 50, 100, Handle, TRUE ); // データハンドルを使って画像を描画
WaitKey(); // キー入力があるまで待機
DxLib_End(); // DXライブラリ終了処理
return 0;
}
特定キーの入力状態を得る関数→ CheckHitKey(int KeyCode);
//KeyCode 入力状態を取得するキーコード
戻り値:1:押されている
0:押されていない
使用例: while( 1 ){
ProcessMessage();
if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 ){
break;
}
}
※ProcessMessage();はエラーが発生しないために使用。詳しくはいつか。
すべてのキーの入力状態を取得する関数→ GetHitKeyStateAll(char *KeyStateBuf);
//KeyStateBuf すべてのキーの押下状態を格納するバッファのポインタ
※キーは全部で256種なので必ずchar key[256];を。
使用例(Zキーが押されているかどうかを見る):
#include "DxLib.h"
int Key[256]; // キーが押されているフレーム数を格納する
// キーの入力状態を更新する
int gpUpdateKey(){
char tmpKey[256]; // 現在のキーの入力状態を格納する
GetHitKeyStateAll( tmpKey ); // 全てのキーの入力状態を得る
for( int i=0; i<256; i++ ){
if( tmpKey[i] != 0 ){ // i番のキーコードに対応するキーが押されていたら
Key[i]++; // 加算
} else { // 押されていなければ
Key[i] = 0; // 0にする
}
}
return 0;
}</font>
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定
int x=0;
// while(裏画面を表画面に反映, メッセージ処理, 画面クリア, キーの状態更新)
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && gpUpdateKey()==0 ){
DrawFormatString( x, 0, GetColor(255,255,255), "?!" ); //x,0 の位置に白で ?! を描画
if( Key[KEY_INPUT_RIGHT] == 1 ){ // 右キーが押された瞬間なら
x = x + 50; // xを50加算
}
}
DxLib_End(); // DXライブラリ終了処理
return 0;
}
画面に描いた内容を消す関数→ ClearDrawScreen();
・ループの時にProcessMessage();と一緒に置くだけでおk。
描画先を裏画面にする関数→ SetDrawScreen( DX_SCREEN_BACK );
※主にDxLib_Init();の後に置く。
裏画面を表画面に反映させる関数→ ScreenFlip();
画像を回転・拡大縮小表示する関数→ DrawRotaGraph(int x, int y, double ExtRate, double Angle, int GrHandle, int TransFlag);
//x, y グラフィックを描画する領域の中心座標
//ExtRate 拡大率(1.0で等倍)
//Angle 描画角度(ラジアン(※)指定)
//GrHandle 描画するグラフィックのハンドル
//TransFlag 透明色を有効にするか(TRUEで有効FALSEで無効)
※角度は孤度法 孤度法ではπ=180゜なので#define PI 3.141592654をすると便利
透明度を画像全体にブレンドする関数→ SetDrawBlendMode(int BlendMode, int Pal);
//BlendMode DX_BLENDMODE_NOBLEND : ノーブレンド(デフォルト)
// DX_BLENDMODE_ALPHA : αブレンド
// DX_BLENDMODE_ADD : 加算ブレンド
//Pal 描画ブレンドモードのパラメータ(0~255)
// 0で完全に見えない 255で今までと同じ。
画像を分割読み込みする関数→ LoadDivGraph(char *FileName, int AllNum,int XNum, int YNum, int XSize, int YSize, int *HandleBuf);
//FileName ファイル名(ポインタ)
//AllNum 画像の分割総数
//XNum ,YNum 横方向の画像の数、縦方向の画像の数
//SizeX ,SizeY 画像1つの横サイズ、画像1つの縦サイズ
//HandleBuf 画像ハンドルを格納する配列のアドレス
格納される順序 [0] [1] [2] [3]
[4] [5] [6] [7]
[8] [9] [10] [11]
[12] [13] [14] [15]
文字を描画する関数→ DrawFormatString(int x, int y, int Color, char *FormatString, ... );
//x, y 文字列を描画する起点座標
//Color 描画する文字列の色 ※GetColor関数で色コード取得
//*FormatString 描画したい書式付き文字列のアドレス
//... 書式付き文字列に付随する引数(Printf的な。)
色コードを取得する関数→ GetColor(int Red, int Green, int Blue);
//Red, Green, Blue 取得したい色の各輝度値(0~255)
ランダム数値を返す関数→ GetRand(int RandMax);
//RandMax 取得する乱数の最大値
戻り値:0~RandMax
乱数の初期値を設定する関数→SRand(int n);
//n 何でもおk。
音声ファイルを読み取って識別番号を返す関数→ LoadSoundMem(char *FileName);
//メモリに読みこむ音声ファイル名の文字列のポインタ
//wav, mp3, ogg が読み込める Mp3はライセンスが@fps@grで危険
読み取った音声ファイルを再生する関数→ PlaySoundMem(int SoundHandle, int PlayType);
//Sound Handle 再生する音の識別番号(サウンドハンドル)
//PlayType 再生モード
// DX_PLAYTYPE_NORMAL ノーマル再生(※)
// DX_PLAYTYPE_BACK バックグラウンド再生
// DX_PLAYTYPE_LOOP ループ再生
※ノーマル再生は再生が終わるまで処理が止まる