サンプルプログラミングの館 10 RPGのサンプル参考
音楽・効果音をメモリにロードしておき、メインの処理で呼び出し再生するテスト。
//main.cpp
#define LOAD
#include "DxLib.h"
#include "SysLoad.h"
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
//ウィンドウモード変更と初期化と裏画面設定
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
SysLoad();//システムデータロード SysLoad.cpp内の処理を呼んでいる
//画面更新 & メッセージ処理 & 画面消去
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
Bgm();//音楽再生
if(CheckHitKey(KEY_INPUT_Z)==1){//Zボタン押すと
//効果音再生 sys_se[x]内にSysLoad.cppで音声ファイルを設定している
PlaySoundMem(sys_se[3],DX_PLAYTYPE_BACK);//指定メモリの音再生
}
}
DxLib_End();
return 0;
}
//SysLoad.h
#include "DxLib.h"
//main.cppのみここを通る
#ifdef LOAD
//音変数
int bgm_sound[2];//音楽用
int sys_se[4]; //効果音用
//以下、main関数で呼ぶためのetern宣言。ソリューションエクスプローラーの通りに書いてある。
//load.cpp
extern void Bgm();
extern void SysLoad();
//main.cpp以外ではココを通る
#else
//音変数
extern int bgm_sound[2];
extern int sys_se[4];
#endif //LOAD
//SysLoad.cpp
#include "SysLoad.h"
void SysLoad(){//データのロード
bgm_sound[0]=LoadSoundMem("BGM/title.ogg"); //タイトル
if( bgm_sound[0] == -1 ){//読込エラーがないか確認用
MessageBox( NULL, TEXT( "Error!!" ), TEXT( "サウンドの再生に失敗" ), MB_OK );
}
bgm_sound[1]=LoadSoundMem("BGM/sato_01.ogg"); //フィールド
sys_se[0]=LoadSoundMem("SystemFile/Enter.ogg"); //決定
sys_se[1]=LoadSoundMem("SystemFile/Cancel.ogg"); //キャンセル
sys_se[2]=LoadSoundMem("SystemFile/Cursor.ogg"); //カーソル移動
sys_se[3]=LoadSoundMem("SystemFile/MenuOpen.ogg");//Fメニュー
return ;
}
//Bgm.cpp
#include "SysLoad.h"
void Bgm(){
if(CheckSoundMem(bgm_sound[0])==0)//マップ用のサウンドが流れていなかったら流す
PlaySoundMem(bgm_sound[0],DX_PLAYTYPE_LOOP);//タイトル音楽再生
return ;
}
細かいところはまだ理解していないので、各コードがどう処理されているのか理解深める。
この形で流用していけるのか、不具合は無いのか考えるのをやめない事。
自戒。