当前位置:文档之家› 网络游戏课程设计

网络游戏课程设计

计算机游戏编程课程设计题目1一、设计目的a)掌握DirectX SDK的安装和设置方法。

b)了解DirectX系统架构,掌握使用Direct3D编写程序的步骤和原理。

c)学习使用Direct3D编写三角形渲染程序。

二、设计步骤(1)DirectX是一种应用程序接口(API),它可以让Windows平台上的游戏或多媒体程序获得更高的执行效率。

加强3D图形和声音效果,并提供给设计人员一个统一的硬件驱动标准,让游戏开发者不必为不同品牌的硬件编写不同的驱动程序,也降低了用户安装及设置硬件的复杂度。

也就是说:只要游戏是依照和使用DirectX来开发的,不管你使用的是什么显卡、声卡,都统统能玩。

(2)DirectX由很多API组成,按照性质分类,可以分为四大部分:显示部分、声音部分、输入部分和网络部分。

显示部分进行图形处理,分为DirectDraw和Direct3D,前者负责2D图形加速。

后者主要负责3D效果的显示。

声音部分中最主要的API是DirectSound,除了播放声音和处理混音之外,还加强了3D音效,并提供了录音功能。

输入部分DirectInput可以支持多种游戏输入设备,除了键盘和鼠标之外还可以连接手柄、游戏操纵杆和模拟器等,它可以充分发挥这些设备的全部功能。

网络部分DirectPlay主要是为了具有网络功能的游戏而开发的,提供了多种连接方式,如TCP/IP、IPX、Modem、串口等,让玩家可以用各种连网方式进行对战。

(3)DirectX的安装和设置步骤:①、使用DirectX之前,必须先安装DirectX开发包,DirectX开发包可以从微软的官方网站()免费下载,安装分两部分进行,安装运行时库和安装SDK组件,直接运行DirectX安装程序就可以自动完成这两步。

安装DirectX之后,需要对编程环境中的头文件和库文件进行设置,设置步骤如下:②、如果使用VC++6.0编程,则设置步骤如下:A、启动VC++6.0,打开所要设置的项目,选择“Tools”→“Options”命令打开Options对话框,如图1所示B、在Options对话框中选择“Directories”,对话框状态如图2所示C、在“Show directories for:”下拉列表中选择“Include files”,然后单击下面的“文件夹图标”按钮,接着通过查找DirectX安装目录下的Include子目录来设置头文件子目录,添加后的对话框如图3所示D、在“Show directories for:”下拉列表中选择“Library files”再单击下面的“文件夹图标”按钮,接着通过查找DirectX安装目录下的Lib文件夹设置库文件目录,添加后的对话框如图4所示E、选择“Project”菜单下的“Settings”命令打开“Project Settings”如图5所示F、选择“Link”选项卡,在“Object/Library modules”一栏最后插入d3d9.libd3dx9.lib,注意不要将原来的内容删除。

插入后的对话框如图6所示③、如果使用的编程环境是Visual Studio .NET 2003,设置步骤如下:a、打开Visual Studio .NET界面,选择菜单命令“工具”→“选项”,打开“选项”对话框,如图7所示b、在左侧窗格中选择“项目”下的“VC++目录”,对话框状态如图8所示c、在“显示以下内容的目录”下拉列表框中选择“包含文件”,然后单击下面的文件夹图标,接着通过查找DirectX安装目录下的Include子目录添加头文件目录,设置后的对话框如图9所示d、在“显示以下内容的目录”下拉列表框中选择“库文件”,然后单击下面的文件夹图标,接着通过查找DirectX安装目录下的Lib文件夹下的x86文件夹,添加库文件目录,设置后的对话框如图10e、这一步要设置支持DirectX运行的静态库,方法是:用Visual Studio .NET打开程序项目(也可以新建一个程序项目),假设项目名称为pro1,选择菜单命令“项目”→“pro1属性”打开“pro1属性页”对话框,如图11f、在左侧窗格中选择“配置属性”→“链接器”→“输入”,对话框状态如图12g、在“附加依赖项”中添入d3dx9.lib d3d9.lib,单击“确定”按钮,设置结束。

(4)以下介绍使用Direct3D API编写“三角形渲染”程序的步骤:a、首先创建一个VC++ Win32空项目,并在主函数WinMain中创建一个窗口,同时创建窗体消息的处理函数。

b、要在程序中使用DirectX3D API,应包含头文件d3d9.h和strsafe.h。

格式为:#include<d3d9.h>#pragmawarning(disable:4996)#include<strsafe.h>#pragmawarning(default:4996)c、创建3个全局变量g_pD3D、g_pd3dDevice、g_pVB,它们的类型分别为LPDIRECT3D9、LPDIRECT3DDEVICE9和LPDIRECT3DVERTEXBUFFER9。

它们分别是指向Direct3D对象的指针、指向D3DDevice(D3D设备)的指针和指向顶点缓冲区的指针。

d、创建结构体类型CUSTOMVERTEX表示顶点,该结构体中包含4个float型成员x、y、z、rhw,表示顶点的位置信息,一个DWORD类型的成员color,表示顶点的颜色。

e、设计函数InitD3D来初始化D3D,该函数的签名为HRESULT InitD3D(HWNDhWnd),参数hWnd为窗体句柄。

函数中先调用函数Direct3DCreate9创建D3D对象,再调用函数CreateDevice创建D3D设备。

函数代码如下:HRESULT InitD3D(HWND hWnd){if(NULL==(g_pD3D=Direct3DCreate9(D3D_SDK_VERSION)))return E_FAIL;D3DPRESENT_PARAMETERS d3dpp;ZeroMemory(&d3dpp,sizeof(d3dpp));d3dpp.Windowed=TRUE;d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;d3dpp.BackBufferFormat=D3DFMT_UNKNOWN;if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL,hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_pd3dDevice))) {return E_FAIL;}return S_OK;}f、设计函数InitVB用来设置和锁定三角形顶点。

函数代码如下:HRESULT InitVB(){CUSTOMVERTEX vertices[]={{350.0f,50.0f,0.5f,1.0f,0xffff0000,},{450.0f,250.0f,0.5f,1.0f,0xff00ff00,},{50.0f,250.0f,0.5f,1.0f,0xff00ffff,},};if(FAILED(g_pd3dDevice->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX),0,D3DFVF_CUSTOMVERTEX,D3DPOOL_DEFAULT,&g_pVB,NULL))){return E_FAIL;}void* pVertices;if(FAILED(g_pVB->Lock(0,sizeof(vertices),(void**)&pVertices,0)))return E_FAIL;memcpy(pVertices,vertices,sizeof(vertices));g_pVB->Unlock();return S_OK;}CreateVertexBuffer函数的参数D3DFVF_CUSTOMVERTEX为一个宏,可在函数前面进行如下宏定义:#define D3DFVF_CUSTOMVERTEX D3DFVF_XYZRHW|D3DFVF_DIFFUSEg、设计函数Cleanup在程序结束时释放D3D对象和设备极其占用的内存。

函数代码如下:void Cleanup(){if(g_pVB!=NULL)g_pVB->Release();if(g_pd3dDevice!=NULL)g_pd3dDevice->Release();if(g_pD3D!=NULL)g_pD3D->Release();}h、设计函数Render来绘制和渲染场景。

函数代码如下:void Render(){g_pd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(255,0,255),1.0f,0);if(SUCCEEDED(g_pd3dDevice->BeginScene())){g_pd3dDevice->SetStreamSource(0,g_pVB,0,sizeof(CUSTOMVERTEX));g_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX);g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,1);g_pd3dDevice->EndScene();}g_pd3dDevice->Present(NULL,NULL,NULL,NULL);}i、编写完整的程序,得到运行结果。

修改顶点坐标,观察结果的变化。

三、设计结果四、设计总结通过本次课设,我掌握了DirectX SDK的安装和设置方法,了解了它们旨在使基于Windows 的计算机成为运行和显示具有丰富多媒体元素(例如全色图形、视频、3D 动画和丰富音频)的应用程序的理想平台。

初次使用,感觉很陌生,编写了一个渲染三角形的小程序,加深了我对Direct的理解。

计算机游戏编程课程设计题目2一、设计目的a)理解Direct3D实现几何变换的原理。

b)学习使用Direct3D API编写程序实现三角形旋转的几何变换。

c)学习使用Direct3D API编写程序实现对光照明和物体材质的模拟。

二、设计步骤(5)一旦构造了物体极其模型,它们都位于自身坐标系之中。

需要把它们都放到同一个世界坐标系中,这个过程称为世界变换。

相关主题