資源簡介
這個是外國人寫的仿CS程序,跟真的CS非常相像,只可惜沒有土匪、警察在里面。這里分享供大家學習用。

代碼片段和文件信息
#include?“CDSound.h“
CDSound::CDSound()
{
//?TODO:?add?construction?code?here
//?Place?all?significant?initialization?in?InitInstance
HRESULT?hRes;
m_lpDirectSound=NULL;
m_lpDSoundBuffer=NULL;
m_bLoop=false;
hRes?=?::DirectSoundCreate(0?&m_lpDirectSound?0);//創(chuàng)建DirectSound對象;
if(?hRes?!=?DS_OK?)
return;
}
CDSound::CDSound(HWND?hWndchar*?filenamebool?bPlaybool?bLoop)
{
//?TODO:?add?construction?code?here
//?Place?all?significant?initialization?in?InitInstance
HRESULT?hRes;
m_lpDirectSound=NULL;
m_lpDSoundBuffer=NULL;
m_bLoop=bLoop;
hRes?=?::DirectSoundCreate(0?&m_lpDirectSound?0);//創(chuàng)建DirectSound對象;
if(?hRes?!=?DS_OK?)
return;
m_bLoop=bLoop;
SetCooperativeLevel(hWnd);
//設(shè)置聲音設(shè)備優(yōu)先級別為“NORMAL“;
OpenSoundFile(filename);
if(bPlay)
Play();
}
CDSound::~CDSound()
{
//?TODO:?add?construction?code?here
//?Place?all?significant?initialization?in?InitInstance
}
void?CDSound::OpenSoundFile(char*?filename)
{
//?TODO:?add?construction?code?here
//?Place?all?significant?initialization?in?InitInstance
LPVOID?lpPtr1;?????????//指針1;
LPVOID?lpPtr2;?????????//指針2;
HRESULT?hResult;
DWORD?dwLen1dwLen2;
LPVOID?m_pMemory;??????//指向WAVE文件的指針
LPWAVEFORMATEX?m_pFormat=NULL;?//LPWAVEFORMATEX類型指針;
LPVOID?m_pData=NULL;???//指向語音數(shù)據(jù)塊的指針;
DWORD?m_dwSize=0;??????//WAVE文件中語音數(shù)據(jù)塊的長度;
FILE?*filein;
DWORD?dwSize;//存放WAV文件長度;
//打開sound.wav文件;
filein=fopen(filename?“rt“);
//fseek():?將?filein?所指文件的位置指針移動到以?0?為基址,
//?????????SEEK_END?為偏移量的位置
fseek(filein0SEEK_END);??//移動到WAVE文件中存放文件長度的地方
dwSize?=?ftell(filein);????//獲取WAVE文件長度
fseek(filein0SEEK_SET);??//定位到打開的WAVE文件文件頭;
int?j?=?ftell(filein);?????//?j???????
//為m_pMemory分配內(nèi)存,用來存放WAVE文件中的數(shù)據(jù);
m_pMemory?=?GlobalAlloc?(GMEM_FIXED?dwSize);
fread(m_pMemory?1?dwSize?filein);??//讀取文件中的數(shù)據(jù);
fclose(filein);
LPDWORD?pdwpdwEnd;
DWORD?dwRiffdwType?dwLength;
//首先清空指針和變量以備使用
if?(m_pFormat)???????????//格式塊指針
m_pFormat?=?NULL;
if?(m_pData)?????????????//數(shù)據(jù)塊指針類型:LPBYTE
m_pData?=?NULL;
if?(m_dwSize)????????????//數(shù)據(jù)長度類型:DWORD
m_dwSize?=?0;
pdw?=?(DWORD?*)?m_pMemory;
dwRiff?=?*pdw++;
dwLength?=?*pdw++;
dwType?=?*pdw++;
if?(dwRiff?!=?MAKEFOURCC?(‘R‘?‘I‘?‘F‘?‘F‘))
return?;//判斷文件頭是否為“RIFF“字符;
if?(dwType?!=?MAKEFOURCC?(‘W‘?‘A‘?‘V‘?‘E‘))
return?;//判斷文件格式是否為“WAVE“;
//尋找格式塊數(shù)據(jù)塊位置及數(shù)據(jù)長度
pdwEnd?=?(DWORD?*)((BYTE?*)?m_pMemory+dwLength?-4);
bool?m_bend=false;
while?((pdw? //pdw文件沒有指到文件末尾并且沒有獲取到聲音數(shù)據(jù)時繼續(xù);
{
dwType?=?*pdw++;
dwLength?=?*pdw++;
switch?(dwType)
{
case?MAKEFOURCC(‘f‘?‘m‘?‘t‘?‘?‘)://如果為“fmt“標志;
if?(!m_pFormat)//獲取LPWAVEFORMATEX結(jié)構(gòu)數(shù)據(jù);
{
if?(dwLength? return?;
m_pFormat?=?(LPWAVEFORMATEX)?pdw;
}
break;
case?MAKEFOURCC(‘d‘?‘a(chǎn)‘?‘t‘?‘a(chǎn)‘)://如果為“data“標志;
if?(!m_pData?||?!m_dwSize)
{
m_pData?=?(LPBYTE)?pdw;//得到指向聲音數(shù)據(jù)塊的指針;
m_dwSize?=?dwLe
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????????0??2004-02-28?00:46??原代碼\CIDevice.cpp
?????文件????????918??2004-12-01?18:34??原代碼\CDSound.h
?????文件???????4937??2004-11-28?19:33??原代碼\CDSound.cpp
?????文件????????358??2004-02-28?00:44??原代碼\CIDevice.h
?????文件??????20019??2005-01-14?17:08??原代碼\CMap.cpp
?????文件???????1950??2004-12-01?18:43??原代碼\CMap.h
?????文件??????43639??2005-01-16?09:57??原代碼\FiWorld.cpp
?????文件???????4347??2004-11-28?21:56??原代碼\FiWorld.dsp
?????文件????????633??2004-02-28?02:09??原代碼\FiWorld.dsw
?????文件??????99328??2005-01-16?09:59??原代碼\FiWorld.ncb
?????文件??????52736??2005-01-16?09:59??原代碼\FiWorld.opt
?????文件???????1505??2005-01-16?09:58??原代碼\FiWorld.plg
?????文件????????171??2004-02-27?22:01??原代碼\mssccprj.scc
?????文件????????144??2004-03-07?20:36??原代碼\vssver.scc
?????文件??????33262??2004-11-30?07:49??原代碼\Replay\replay.txt
?????目錄??????????0??2004-11-30?07:27??原代碼\Replay
?????文件???????5825??2004-12-05?14:17??原代碼\Maps\WorldM.txt
?????文件??????37008??2004-11-28?16:03??原代碼\Maps\關(guān)于?WorldM?文件的說明.jpg
?????文件???????2415??2004-12-08?16:05??原代碼\Maps\bbbb.txt
?????文件????????465??2004-12-08?16:06??原代碼\Maps\cccc.txt
?????文件??????17728??2004-12-08?16:48??原代碼\Maps\aaaa.txt
?????文件???????2195??2004-12-05?14:42??原代碼\Maps\skybox.txt
?????文件??????70276??2004-12-08?16:26??原代碼\Maps\oldmap.txt
?????文件?????620715??2004-12-08?16:48??原代碼\Maps\juju.txt
?????目錄??????????0??2004-11-30?07:27??原代碼\Maps
?????文件????7656960??2000-10-31?15:39??原代碼\Media\sierra.avi
?????目錄??????????0??2004-11-30?07:27??原代碼\Media
?????文件?????196662??1999-11-28?19:00??原代碼\Gfx\Mud0.bmp
?????文件??????66614??2000-10-31?15:31??原代碼\Gfx\desertbk.bmp
?????文件??????66614??2004-02-24?23:36??原代碼\Gfx\desertdn.bmp
............此處省略28個文件信息
評論
共有 條評論