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

2018-12-17 16:17

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

引擎启动后第一件事件为创建游戏窗口,所以拥有游戏引擎设计后只需在initialize()中添加 窗口的创建代码即可。游戏循环时所有的消息都抛给HandleEvent()处理。

而一些具体的细节,如:AddSprite(Sprite* pSprite),DrawSprites(HDC hDC),UpdateSprites(),CleanupSprites()和IsPointInSprite(x,y)在相应的镭射机中都有相应的虚函数 ,会根据动态连编调用到相应的函数,所以那就是其他类设计的问题,所以游戏隐形可以很好的分离游戏运行方式和代码编写。

以下为引擎的一些属性(数据成员):

static GameEngine* m_pGameEngine; HINSTANCE m_hInstance; HWND m_hWindow; TCHAR m_szWindowClass[32]; TCHAR m_szTitle[32]; WORD m_wIcon, m_wSmallIcon; int m_iWidth, m_iHeight; int m_iFrameDelay; BOOL m_bSleep; UINT m_uiJoystickID; RECT m_rcJoystickTrip; vector m_vSprites;

// //应用程序句柄 //窗口句柄 //窗口类名称 //游戏标题 //游戏图标

//游戏的宽度和高度 //帧延迟 //休眠状态

//子画面列表

3.3.5 AlienSprite类

此类为将子类,它的用途为在游戏中为玩家提供各种各样的帮助,如 一定时间内无敌 加一条命 或者 减一条命等等。

此类与坦克类的最大差别在于它是可以“自生”也可以“自灭”。所以添加了一个 保护的数据成员 m_iTime 。和一个功能函数(AddTime()) 两个访问函数。当奖子update()时自动调用AddTime(),当m_iTime大于300 时 自动销毁。

在游戏循环中可以根据游戏的难度来计算出奖子的频率,难度越大出现酱紫的几率越小。If((rand() % (200-g_iDifficulty)) == 0)。

游戏规则:获得无敌清除以前的无敌时间,重新开始计算不会累加。获得加一命,如果为满命则不会增加生命上限。获的减一条命,如果仅剩一条命则不会死亡。

- 12 -

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

第四章 详细设计

4.1 详细设计概述

详细设计是对设计结果进一步细化,给出系统的精确描述,以便在编码阶段直接翻译成计算机上能够运行的程序代码。详细设计虽然并不是用计算机程序设计语言编程,而是要细化总体设计的有关结果,形成软件详细规格,但与其编程思想、方法和风格有密切相关的。为了保证软件质量,软件详细设计既要正确,又要清晰易读,便于编码实现和验证。

在软件的生命周期中,设计测试方案和诊断程序错误,修改程序等等都必须首先读懂程序。实际上对于长期使用的软件系统而言,人读程序的时间可能比写程序的时间还要长得多。因此衡量程序的质量不仅要看它的逻辑是否正确,性能是否能满足要求,更主要的是要看它是否容易阅读和理解。详细设计的目标不仅仅是逻辑上的实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。结构程序设计技术是实现上述目标的关键技术,因此是详细设计的逻辑基础。

4.2 图形图像设计

本游戏所有图片均是采用PS制作,由于在图片显示时,每一个像素都要求色菜不变,也就是RGP不可变。所以采用像素图的方式来进行绘图。游戏中使用 :R:255 G:0 B:255 (粉红色)为透明色。

像素图(也叫点阵图、光栅图),顾名思义就是由点(一个点就是一个像素)构成的,如同用马赛克去拼贴图案一样,每个马赛克就是一个点,若干个点以矩阵排列成图案。这种图片在比较正常的情况下看不到像素点,但是当你把它放大到一定程度时便可以看到里面的小颗粒,即像素颗粒。与之相对的是矢量图。矢量图的内容是用数字化信息来存储的,可以无限放大,放大多少倍图形也不会丢失,即精度不变。

像素图是以最小的像素点为单位,通过人为的艺术加工,在有限的范围内,有规律的布局组合的图片,可以说,像素图必须是通过艺术者的加工才能产生的。通常用在特定的地方,如电脑图标,网页界面,游戏图片等。

位图则通常指包含成百上千万的复杂的颜色和坐标点的大图片,视觉上无法察觉像素点的存在,而是放大多倍后,实际上由大量看似无序的像素点组成,完整效果很精细的图片。通常指电子照片,电子图画等。

像素图和位图的区别就在于,前者是由有序的像素点组成的,图片小,而后者是超大量无序的像素点组成,图片大。而两者都属于点阵图。

- 13 -

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

4.3 算法详细

4.3.1 炮口瞄准鼠标算法

实现方法:得到gun 指向 mouse 的 向量 ,根据向量方向计算gun的当前帧。 当前帧数与向量范围对应关系如下:

第 1 象 限 第 2 象 限 第 3 象 限 第 4 象 限

表4.1 gun 方向表

方向 0->15 15->45 45->75 75->90 90->105 105->135 135->165 165->180 180->-165 165->135 135->105 105->90 90->75 75->45 45->15 15->0

tan范围 XX->3.732 3.732->1 1->0.268 0.268->0 0->0.268 0.268->1 1->3.732 3.732->XX 3.732->XX 3.732->1 1->0.268 0.268->0 0->0.268 0.268->1 1->3.732 3.732->XX 帧数 1 2 3 4 4 5 6 7 8 8 9 10 10 11 12 1 图4.1 炮口图

以下为第一象限的判定方法:

if(fRadion<100&&fRadion>3.732){g_pTankSprite->SetGunCurFrame(0);}

if(fRadion<3.732&&fRadion>1){g_pTankSprite->SetGunCurFrame(1);} if(fRadion<1&&fRadion>0.268){g_pTankSprite->SetGunCurFrame(2);} if(fRadion<0.268&&fRadion>0){g_pTankSprite->SetGunCurFrame(3);}

- 14 -

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

原点 X yy xx Y 图4.1 炮口 方向示意图

4.3.2炮弹的轨迹算法

已知运动的目标坐标和发射坐标,求出初始速度。也就是求发射坐标指向靶子坐标向量的方向。

运动大致上可以分为12个方向,所以把轨迹向量的方向分为12个区域,每一个区域的中分线方向就估计为速度的方向。

int xPoi=g_pTankSprite->GetPosition().left +g_pTankSprite->GetGunWidth() /2;

int yPoi=g_pTankSprite->GetPosition().top+g_pTankSprite->GetGunHeight()/2; int xx=x-xPoi; int yy=y-yPoi; float fRadion=1.0f;

fRadion=(float)xx/(float)yy; if(fRadion>100)fRadion=100; if(fRadion<-100)fRadion=-100;

- 15 -

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

6 3

5

6 4

4

6

6

图4.2 第一象限轨迹示意

表4.2 炮弹方向表

方向 第 1 象 限 第 2 象 限 第 3 象 限 第 4 象 限

tan范围 XX->3.732 3.732->1 1->0.268 0.268->0 0->0.268 0.268->1 1->3.732 3.732->XX 3.732->XX 3.732->1 1->0.268 0.268->0 0->0.268 0.268->1 1->3.732 3.732->XX 速度X 0 3 5 6 6 5 3 0 0 3 5 6 6 5 3 0 速度Y -6 5 3 0 0 3 5 6 6 5 3 0 0 3 5 6 0->15 15->45 45->75 75->90 90->105 105->135 135->165 165->180 180->-165 165->135 135->105 105->90 90->75 75->45 45->15 15->0 - 16 -


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

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

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

马上注册会员

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