ゲームプログラミングの館は全て理解し、龍神録プログラミングの館は6章まで見ました。
用意したmp3ファイルは普通に再生できるので、プログラムのほうが問題だと思うのですが、何が問題なのか全くわかりません。パスもちゃんと見直したりしてるのですが・・・ご指摘お願いします。
フォルダ構成

//main.cpp
#define GLOBAL_INSTANCE
#include "../include/GV.h"
int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ){
Window_Init();
int Test = LoadSoundMem("test.mp3");
while( !ProcessLoop() && !CheckStateKey( KEY_INPUT_ESCAPE ) ){
if( CheckSoundMem( Test ) == 0 )
PlaySoundMem( Test, DX_PLAYTYPE_BACK );
DrawFPS( 2, 460 );
}
DxLib_End();
return 0;
}
//GV.h
#include "./DxLib/DxLib.h"
#include "Define.h"
#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern
#endif
#include "Function.h"
//Define.h
#pragma warning(disable:4996)
#pragma warning(disable:4244)
#define PI 3.141592f
#define PI2 PI*2
#define FRAME 60
#define FPS_COLOR GetColor( 255,255,255 )
#define ALL_RUN TRUE
#define WINDOWSIZE_CHANGE TRUE
#define MB_MESSAGE "フルスクリーンで起動しますか?"
#define MB_TITLE "スクリーン設定"
#include "Struct.h"
//struct.h
typedef struct{
int Count, Count_0;
int Frame[FRAME];
double Ave;
}FPS_t;
//Function.h
GLOBAL void swap( int *a, int *b );
GLOBAL double rad ( double angle );
GLOBAL int Message_Box();
GLOBAL void NoOverlapRand( int min, int max, int *val );
GLOBAL int BetWeenRand ( int min, int max );
GLOBAL void KeepSpeedManagement();
GLOBAL void DrawFPS( int x, int y, int flag=TRUE );
GLOBAL void GetHitKeyStateAll_2();
GLOBAL int CheckStateKey( unsigned char Handle );
GLOBAL int CheckHitKeyAll_2();
GLOBAL int Window_Init();
GLOBAL int ProcessLoop();
//Init.cpp
int Window_Init(){
if( Message_Box() == -1 )
return -1;
if( SetAlwaysRunFlag( ALL_RUN ) == - 1 )
return -1;
if( SetWindowSizeChangeEnableFlag( WINDOWSIZE_CHANGE ) == -1 )
return -1;
if( DxLib_Init() == -1 )
return -1;
if( SetDrawScreen( DX_SCREEN_BACK ) == -1 )
return -1;
return 0;
}
int ProcessLoop(){
KeepSpeedManagement();
GetHitKeyStateAll_2();
if( ScreenFlip() == -1 )
return -1;
if( ProcessMessage() == -1 )
return -1;
if( ClearDrawScreen() == -1 )
return -1;
return 0;
}
//Key.cpp
#include "../../include/GV.h"
unsigned int StateKey[256];
unsigned int StateKey2;
void GetHitKeyStateAll_2(){
char StateKeyBuf[256];
GetHitKeyStateAll( StateKeyBuf );
for( int i=0; i<256; i++ ){
if( StateKeyBuf[i] == 1 ) StateKey[i]++;
else StateKey[i]=0;
}
}
int CheckStateKey( unsigned char Handle ){
return StateKey[ Handle ];
}
int CheckStateKeyAll_2(){
if( CheckHitKeyAll() == 1 ) StateKey2++;
else StateKey2=0;
return StateKey2;
}
//FPS.cpp
#include "../../include/GV.h"
FPS_t FPS;
void KeepSpeedManagement(){
int term, gnt;
static int t = 0;
if( !FPS.Count ){
if( !t ) term = 0;
else term = FPS.Count_0 + 1000 - GetNowCount();
}
else
term = (int)( FPS.Count_0 + FPS.Count*( 1000.0/FRAME )) - GetNowCount();
if( term > 0 )
Sleep( term );
gnt = GetNowCount();
if( !FPS.Count )
FPS.Count_0 = gnt;
FPS.Frame[FPS.Count] = gnt-t;
t = gnt;
if( FPS.Count == FRAME -1 ){
FPS.Ave = 0;
for( int i = 0; i < FRAME; i++ ) FPS.Ave += FPS.Frame[i];
FPS.Ave /= FRAME;
}
FPS.Count = ( ++FPS.Count ) % FRAME;
}
void DrawFPS( int x, int y, int flag ){
if( flag == TRUE )
if( FPS.Ave )
DrawFormatString( x, y, FPS_COLOR, "FPS[%.1f]", 1000/FPS.Ave );
return;
}
//Other.cpp
#include "../../include/GV.h"
int Message_Box(){
int Flag = MessageBox( NULL,
TEXT( MB_MESSAGE ),
TEXT( MB_TITLE ),
MB_YESNO | MB_ICONQUESTION
);
if( Flag == IDNO )
if( ChangeWindowMode( TRUE ) != 0 )
return -1;
return 0;
}
double rad( double angle ){
if( angle )
return PI2/(360/angle);
return 0;
}
void swap( int *a, int *b ){
int r = *a;
*a = *b;
*b = r;
}
void NoOverlapRand( int min, int max, int *val ){
int i = 0;
for( int t = min; t <= max; t++ ){
val[i] = t;
i++;
}
for( int n = max - min; n >= 0; i-- )
swap( &val[GetRand(n)], &val[n] );
}
int BetWeenRand( int min, int max ){
return GetRand( max - min ) + min;
}
ソースコード全部貼ってしまい申し訳ありません、疑問に思ったことがあれば聞いてください、ちゃんと答えますので。