资源简介
CS的场景实现,带碰撞检测,简单射击2维目标
代码片段和文件信息
#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);//创建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);//创建DirectSound对象;
if( hRes != DS_OK )
return;
m_bLoop=bLoop;
SetCooperativeLevel(hWnd);
//设置声音设备优先级别为“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; //指向语音数据块的指针;
DWORD m_dwSize=0; //WAVE文件中语音数据块的长度;
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分配内存,用来存放WAVE文件中的数据;
m_pMemory = GlobalAlloc (GMEM_FIXED dwSize);
fread(m_pMemory 1 dwSize filein); //读取文件中的数据;
fclose(filein);
LPDWORD pdwpdwEnd;
DWORD dwRiffdwType dwLength;
//首先清空指针和变量以备使用
if (m_pFormat) //格式块指针
m_pFormat = NULL;
if (m_pData) //数据块指针类型:LPBYTE
m_pData = NULL;
if (m_dwSize) //数据长度类型: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“;
//寻找格式块数据块位置及数据长度
pdwEnd = (DWORD *)((BYTE *) m_pMemory+dwLength -4);
bool m_bend=false;
while ((pdw < pdwEnd)&&(!m_bend))
//pdw文件没有指到文件末尾并且没有获取到声音数据时继续;
{
dwType = *pdw++;
dwLength = *pdw++;
switch (dwType)
{
case MAKEFOURCC(‘f‘ ‘m‘ ‘t‘ ‘ ‘)://如果为“fmt“标志;
if (!m_pFormat)//获取LPWAVEFORMATEX结构数据;
{
if (dwLength < sizeof (WAVEFORMAT))
return ;
m_pFormat = (LPWAVEFORMATEX) pdw;
}
break;
case MAKEFOURCC(‘d‘ ‘a‘ ‘t‘ ‘a‘)://如果为“data“标志;
if (!m_pData || !m_dwSize)
{
m_pData = (LPBYTE) pdw;//得到指向声音数据块的指针;
m_dwSize = dwLe
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4937 2010-04-22 19:43 cs\CDSound.cpp
文件 918 2010-04-22 19:43 cs\CDSound.h
文件 0 2010-04-22 19:43 cs\CIDevice.cpp
文件 358 2010-04-22 19:43 cs\CIDevice.h
文件 20026 2010-05-04 02:45 cs\CMap.cpp
文件 1950 2010-05-04 01:53 cs\CMap.h
文件 32812 2001-04-21 14:59 cs\Data\Coke.tga
文件 262188 2001-04-21 15:31 cs\Data\Explode.tga
文件 3126 2000-03-16 18:23 cs\Data\Particle.bmp
..A.SH. 5120 2010-05-04 12:59 cs\Data\Thumbs.db
文件 17462 2010-04-22 19:45 cs\Debug\CDSound.obj
文件 0 2010-04-22 19:45 cs\Debug\CDSound.sbr
文件 29746 2010-05-04 02:45 cs\Debug\CMap.obj
文件 0 2010-05-04 02:45 cs\Debug\CMap.sbr
文件 4817920 2010-05-04 14:39 cs\Debug\FiWorld.bsc
文件 270416 2010-05-04 14:39 cs\Debug\FiWorld.exe
文件 570440 2010-05-04 14:39 cs\Debug\FiWorld.ilk
文件 83552 2010-05-04 14:39 cs\Debug\FiWorld.obj
文件 5558228 2010-05-04 02:46 cs\Debug\FiWorld.pch
文件 787456 2010-05-04 14:39 cs\Debug\FiWorld.pdb
文件 0 2010-05-04 14:39 cs\Debug\FiWorld.sbr
文件 21718 2010-05-03 18:32 cs\Debug\GLFont.obj
文件 0 2010-05-03 18:32 cs\Debug\GLFont.sbr
文件 21555 2010-05-03 18:30 cs\Debug\OpenGL.obj
文件 827043 2010-05-03 18:30 cs\Debug\OpenGL.sbr
文件 230400 2010-05-04 15:39 cs\Debug\vc60.idb
文件 102400 2010-05-04 14:39 cs\Debug\vc60.pdb
文件 60111 2010-05-04 14:39 cs\FiWorld.cpp
文件 4347 2010-04-22 19:43 cs\FiWorld.dsp
文件 633 2010-04-22 19:43 cs\FiWorld.dsw
............此处省略54个文件信息
- 上一篇:ruminations on C++
- 下一篇:哈工大软件学院07级数据结构课程设计
相关资源
- c++基于OpenGL的游戏源代码
- opengl c++读取obj文件
- Nehe的OpenGL教程电子书(chm格式)中文
- 计算机图形学 清华大学教材 及 vc++
- 三维建筑物漫游程序 opengl
- MFC+OpenGL实现3ds模型导入
- 孔令德的计算机图形学实验及课程设
- 使用OpenGL绘制圆锥和和圆柱 C++实现
- opengl实现动画
- cpp-Craft使用现代OpenGL用C语言编写的一
- 计算机图形学大作业参考代码(VC版)
- 基于vc6.0的OpenGL小动画代码
- 计算机图形学 图形变换 C++ MFC
- OPENGL光线跟踪算法
- opengl简单的阴影贴图
- 用visual C++ 6.0编写的计算机图形的一些
- 计算机图形学简单多边形裁剪程序
- B样条曲线生成算法,用VC++加OpenGL写的
- 计算机图形学 大作业 多功能图形学程
- MFC多边形画法--计算机图形学
- 计算机图形学 visual c++ 6.0 实时动画有
- 计算机图形学 visual c++ 6.0 三维变换有
- 计算机图形学基于opengl图形变换源代
- 3D图形旋转
- 基于OpenGL的3D射击游戏的设计与实现
- 弹球 OPenGL C++
- DEM——三维地形可视化
- 计算机图形学大作业简易绘图板mfc
- 计算机图形学OPENGL 动画代码
- OpenGL海量demo及源码&附带chm手册集合包
评论
共有 条评论