sound.cpp

来自「this block game source」· C++ 代码 · 共 83 行

CPP
83
字号
/////////////////////////////////////////////////////////////////////////////////////////////
// SOUND.CPP
/////////////////////////////////////////////////////////////////////////////////////////////
#include "sound.h"

LPDIRECTSOUND lpDS;
HSNDOBJ BlockHitSnd;
HSNDOBJ WallHitSnd;
HSNDOBJ BallHitSnd;
HSNDOBJ DeadSnd;
HSNDOBJ WonSnd;


/////////////////////////////////////////////////////////////////////////////////////////////
// InitSound
/////////////////////////////////////////////////////////////////////////////////////////////
BOOL InitSound(HWND hWnd)
{
	HRESULT rval;

	rval = DirectSoundCreate(NULL, &lpDS, NULL);
	if(rval != DS_OK) return FALSE;

	rval = lpDS->SetCooperativeLevel(hWnd, DSSCL_NORMAL);
	if(rval != DS_OK) return FALSE;

	BlockHitSnd = SndObjCreate(lpDS, "BLOCKHIT", 5);
	// if(BlockHitSnd == NULL) return FALSE;
	WallHitSnd = SndObjCreate(lpDS, "WallHit", 2);
	// if(WallHitSnd == NULL) return FALSE;
	BallHitSnd = SndObjCreate(lpDS, "BallHit", 5);
	// if(BallHitSnd == NULL) return FALSE;
	DeadSnd = SndObjCreate(lpDS, "Dead", 1);
	// if(DeadSnd == NULL) return FALSE;
	WonSnd = SndObjCreate(lpDS, "Won", 1);
	// if(WonSnd == NULL) return FALSE;

	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////////////////////
// FiniSound
/////////////////////////////////////////////////////////////////////////////////////////////
void FiniSound()
{
	if(lpDS)
	{
		lpDS->Release();
		lpDS = NULL;
	}

	SndObjDestroy(BlockHitSnd);
	SndObjDestroy(WallHitSnd);
	SndObjDestroy(BallHitSnd);
	SndObjDestroy(DeadSnd);
	SndObjDestroy(WonSnd);
}

/////////////////////////////////////////////////////////////////////////////////////////////
// PlaySound
/////////////////////////////////////////////////////////////////////////////////////////////
void PlaySound(SOUNDS sound)
{
	switch(sound)
	{
		case SND_BLOCKHIT:
			SndObjPlay(BlockHitSnd, 0);
			break;
		case SND_WALLHIT:
			SndObjPlay(WallHitSnd, 0);
			break;
		case SND_BALLHIT:
			SndObjPlay(BallHitSnd, 0);
			break;
		case SND_DEAD:
			SndObjPlay(DeadSnd, 0);
			break;
		case SND_WON:
			SndObjPlay(WonSnd, 0);
			break;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?