毕业设计 计算机 产品说明书 正版(2)

2018-12-17 16:17

天津理工大学2010届本科毕业设计说明书

玩家控制坦克的运行可以通过键盘响应事件控制,但敌方则因为是自动运行,就需要有一定的智能性;敌人坦克的运行算法也要进行相关的设置,已免游戏过于简单。

对于双方发射的子弹应该赋予不同的速度,同时,程序应该设定敌人坦克的子弹不与敌人的坦克进行碰撞检测,已增加游戏的可玩性。

双方的坦克在前进时也需要考虑到是否碰撞到对方坦克,以免重叠运行,造成许多物理上不可能的情况,缺乏真实感。每一次刷新页面、每前进一步都需要进行相关的碰撞检测。

1.4 游戏实现意义

当今游戏市场,网络游戏当道,单机游戏发展缓慢。而休闲游戏的发展不但缓慢,而且更是畸形。很多休闲游戏的公告竟然以色情之类为特色区吸引玩家。这真是游戏魅力的侮辱。

所以希望此款游戏能够起到一个抛砖引玉的作用,可以开始改变当前单机游戏尤其是休闲游戏的现状。并且希望此款游戏可以真正的能够缓解人们紧张的工作压力,可以给每一游戏玩家带来快乐。

所以此游戏设计的主要标准就是原创。还有就是游戏要有能够使玩家产生一定的成就感和挑战性。成就感可以从最高分数上入手,是玩家可以以自己的分数最高为荣。而挑战性则可以从高难度的操作快速的反应能力上入手,并且可以使游戏同时进行着闪避和攻击等等。

- 2 -

天津理工大学2010届本科毕业设计说明书

第二章 主要技术

2.1双缓冲技术

双缓冲图形刷新技术能解决绘图时屏幕闪烁的问题。

很长一段时间我一直认为绘图过程中出现的屏幕闪烁是图形刷新速度过快而造成的,但是通过编写一些绘图程序,我发现事情并非如此,至少刷新速度快不会是造成屏幕闪烁的根本原因。这个问题可以通过下面的两个试验进行说明。

1、编写一个刷新速度很慢的应用程序,可以设计为通过点击鼠标来进行屏幕刷新。通过该试验可以发现即使屏幕的刷新速度很慢,但是在每次刷新的时候仍然存在屏幕的问题,只是闪烁不是很明显。

2、编写一个刷新速度很快的应用程序,并在程序中应用双缓冲图形刷新技术。通过该试验可以发现虽然屏幕刷新速度很快,但是采用了双缓冲图新刷新技术以后,屏幕不存在闪烁。

屏幕闪烁的根本原因是相邻两帧图像之间存在的巨大差异造成的,而windows GDI的图形刷新方式使得任何两帧图像之间都存在着巨大的差异,因为windows GDI在进行刷新之前都会首先将整个屏幕刷成白色,就相当于在电影胶片的相邻两帧之间都插入了一个白色的帧,这也就是为什么屏幕闪烁时总是看到一个隐约的白色窗口在闪烁而不是一个红色的窗口在闪烁。双缓冲图形刷新技术避免了windows GDI刷新的问题,其没有在连续的两帧之间插入白色的帧,从而解决了屏幕闪烁的问题。

双缓冲图形刷新技术的原理

双缓冲图形刷新技术顾名思义是采用双缓存实现的。传统的绘图方式实际上是一种单缓冲。在windows中每一种设备都在内存中有一个设备描述表与其对应,这个设备描述表实际上就是一个内存缓冲区。传统的绘图中我们是将图形绘制在设备描述表缓冲区中,然后由GDI自动的将设备描述表中的图像拷贝到显存中进行显示。这样一个自动的拷贝过程屏蔽了传统的绘图方式是单缓冲的实质,使我们感觉到我们是在直接操纵显存一样。双缓冲图形刷新技术在内存中有两片缓存,除了设备描述表以外还有一个需要手动建立的与设备描述表缓冲区(前端缓冲区)相兼容的后备缓冲区。绘图过程中,首先将图形绘制在后备缓冲区中,然后在手动的将后备缓冲区中的图像拷贝到前端缓冲区中,再由gdi自动将前端缓冲区中的图像拷贝到显存完成图形的显示过程。

双缓冲图形刷新技术的实现步骤

1、创建与窗口设备描述表(前端缓冲区)兼容的内存设备描述表(后端缓冲区)。 2、创建与内存设备描述表相兼容的位图并将该位图选入内存设备描述表中(没有位图的设备描述表是不能绘图的)。

3、将图形绘制在内存设备描述表中。

- 3 -

天津理工大学2010届本科毕业设计说明书

4、将内存设备描述表中的内容拷贝到窗口设备描述表。 5、释放设备描述表句柄、位图等资源。

2.2 人工智能

人工智能就是要让机器的行为看起来就象是人所表现出的智能行为一样。但是这个定义似乎忽略了强人工智能的可能性。另一个定义指人工智能是人造机器所表现出来的智能性。总体来讲,目前对人工智能的定义大多可划分为四类,即机器“像人一样思考”、“像人一样行动”、“理性地思考”和“理性地行动”。这里“行动”应广义地理解为采取行动,或制定行动的决策,而不是肢体动作。

弱人工智能观点认为不可能制造出能真正地像人一样的推理和解决问题的智能机器,这些机器只不过看起来像是智能的,但是并不真正拥有智能,也不会有自主意识。

目前研究的主流是弱人工智能,并且一般认为这一研究领域已经取得可观的成就。强人工智能的研究则处于停滞不前的状态下。

本游戏主要用的是弱人工智能来实现敌方坦克的行为AI和开火AI。

2.3 游戏引擎

游戏引擎就像汽车的引擎一样,引擎对赛车的作用,决定着赛车的性能和稳定性,赛车的速度、操纵感这些直接与车手相关的指标都是建立在引擎的基础上的。游戏也是如此,玩家所体验到的剧情、关卡、美工、音乐、操作等内容都是由游戏的引擎直接控制的,它扮演着中场发动机的角色,把游戏中的所有元素捆绑在一起,在后台指挥它们同时、有序地工作。简单地说,引擎就是“用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。”

可见,引擎并不像想象中那样的神,无论是2D游戏还是3D游戏,无论是角色扮演游戏、即时策略游戏、冒险解谜游戏或是动作射击游戏,哪怕是一个只有1M的小游戏,都有这样一段起控制作用的代码。经过不断的进化,如今的游戏引擎已经发展为一套由多个子系统共同构成的复杂系统,从建模、动画到光影、粒子特效,从物理系统、碰撞检测到文件管理、网络特性,还有专业的编辑工具和插件,几乎涵盖了开发过程中的所有重要环节,以下就对引擎的一些关键部件作一个简单的介绍。

首先是各种的光效果,即场景中的光源对处于其中的人和物的影响方式。游戏的光影效果完全是由引擎控制的,折射、反射等基本的光学原理以及动态光源、彩色光源等高级效果都是通过引擎的不同编程技术实现的。

然后是动画,目前游戏所采用的动画系统可以分为两种:一是骨骼动画系统,一是模型动画系统,前者用内置的骨骼带动物体产生运动,比较常见,后者则是在模型的基础上直接进行变形。引擎把这两种动画系统预先植入游戏,方便动画师为角色设计丰富的动作造型。

- 4 -

天津理工大学2010届本科毕业设计说明书

物理系统是另一个主要功能,这可以使物体的运动遵循固定的规律,例如,当角色跳起的时候,系统内定的重力值将决定他能跳多高,以及他下落的速度有多快,子弹的飞行轨迹、车辆的颠簸方式也都是由物理系统决定的。

碰撞检测是引擎的一个核心部分,它可以探测游戏中各物体的物理边缘。当两个3D物体撞在一起的时候,这种技术可以防止它们相互穿过,这就确保了当你撞在墙上的时候,不会穿墙而过,也不会把墙撞倒,因为碰撞探测会根据你和墙之间的特性确定两者的位置和相互的作用关系。

引擎还有一个重要的职责就是负责玩家与电脑之间的沟通,处理来自键盘、鼠标、摇杆和其它外设的信号。如果游戏支持联网特性的话,网络代码也会被集成在引擎中,用于管理客户端与服务器之间的通信。

这个功能其实可以有很多的扩展,他可以扩展成网络游戏中的网络通信功能。这样一个网络版的游戏引擎就诞生了,这要感谢面向对象思想,不然不会这么容易就改成网络版的。

正是出于节约成本、缩短周期和降低风险这三方面的考虑,越来越多的开发者倾向于使用第三方的现成引擎制作自己的游戏,一个庞大的引擎授权市场已经形成。

2.4 游戏功能

1. 显示方式 游戏中为了美观,适用性强,可能需要采用外部文件引入的图片贴图,有关贴图,得解决静态或动态、画面背景、屏幕刷新的双缓冲等都有较好的解决方案。

2. 前景 为了增加界面的美观,在程序中添加了大树。使用大树作为前景不但可以使界面变得更美观真实,还可以增加游戏趣味性。当玩家坦克隐藏在大树下时候,玩家就要盲操作。这很大程度提高了游戏操作难度。

3. 难度 游戏要能够随着游戏发展而不断变化,这样不但可以保证高分需要技术,还可以是玩家的挑战心得到满足。

4. 流畅 游戏运行是一定要流畅,虽然C++完全编译后在执行程序,运行速度较java c#等速度要快,但是程序如果不进行精简和优化,将可能导致运行的不流畅。开发过程中要事事做到对结构上的控制、变量的使用、算法的优化等的优化。

5. 界面 游戏的结束、开始、动态信息画面作为构成一个程序都是必不可少的重要部分。良好的用户界面更是吸引用户的硬指标,相关的美术构图和人性化设置也需要有一定的考虑。

6. 真实性 无论是自己的坦克还是敌人的坦克一定要做到逼真。比如朝不同的方向行走的时候,坦克的底座要配合,并且还要注意坦克的底座和大炮是可以相对运动的,所以当坦克底座配合底座转动时,炮口最好不动。对于大炮一定要做到开炮之前就已经把炮头转向了哪个方向了。不能够同时转过去,那样就是真了。

7. 声音 对于背景音乐,要选择可以带动人心并且符合游戏的。对于一些配音则是要求同步性,并且不能太多,那样会使得玩家心烦。

- 5 -

天津理工大学2010届本科毕业设计说明书

第三章 总体设计

3.1 总体设计概述

在总体设计中首先要划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等。然后对游戏进行抽象,将有共性的对象抽象成一个类。尽量对软件结构进行精化。首先设计出不同的软件结构,然后对他们进行评价和比较,力求得到“最好”的结果。这种优化的可能是把软件结构设计和过程设计分开的真正优点之一。结构简单通常即表示设计风格优雅,又表明效率高。设计优化应该力求做到在有效的模块化的前提下使用最少量的模块,以及在能够满足信息要求的前提下使用最简单数据结构。

3.2 系统总体设计

本程序采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。运行程序后允许用户选择执行选项菜单,在开始游戏后通过WinMain()开始执行代码,先从外部文件载入图片和音乐,对背景的所有物体进行绘图。然后初始化游戏引擎,创建游戏窗口。随后进入游戏循环。通过pro()进行各种消息的处理

游戏状态的处理。游戏启动后首先进入停止状态,等待玩家的开始命令,当开始后可以根据焦点的变化而随时暂态游戏。游戏的运行状态,暂停状态和停止状态的转换可从图3.2中得知。

static GameEngine* m_pGameEngine; HINSTANCE m_hInstance; HWND m_hWindow; TCHAR m_szTitle[32];

//

//应用程序句柄

//窗口句柄 //窗口类名称

TCHAR m_szWindowClass[32]; WORD m_wIcon, m_wSmallIcon; int m_iWidth, m_iHeight; int m_iFrameDelay; BOOL m_bSleep;

//游戏标题 //游戏图标 //帧延迟

//休眠状态

//游戏的宽度和高度

- 6 -


毕业设计 计算机 产品说明书 正版(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:消防培训和演练活动总结

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: