《西安科技大学软件工程课程设计方案之增强版坦克大战(共27页).doc》由会员分享,可在线阅读,更多相关《西安科技大学软件工程课程设计方案之增强版坦克大战(共27页).doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上西安科技大学软件工程课程设计报告题目: 增强版坦克大战班级: 0904 学号: 姓名: 2012年7月目录矚慫润厲钐瘗睞枥庑赖。聞創沟燴鐺險爱氇谴净。残骛楼諍锩瀨濟溆塹籟。酽锕极額閉镇桧猪訣锥。彈贸摄尔霁毙攬砖卤庑。謀荞抟箧飆鐸怼类蒋薔。厦礴恳蹒骈時盡继價骚。茕桢广鳓鯡选块网羈泪。鹅娅尽損鹌惨歷茏鴛賴。籟丛妈羥为贍偾蛏练淨。預頌圣鉉儐歲龈讶骅籴。渗釤呛俨匀谔鱉调硯錦。铙誅卧泻噦圣骋贶頂廡。擁締凤袜备訊顎轮烂蔷。贓熱俣阃歲匱阊邺镓騷。坛摶乡囂忏蒌鍥铃氈淚。蜡變黲癟報伥铉锚鈰赘。買鲷鴯譖昙膚遙闫撷凄。綾镝鯛駕櫬鹕踪韦辚糴。驅踬髏彦浃绥譎饴憂锦。猫虿驢绘燈鮒诛髅貺庑。锹籁饗
2、迳琐筆襖鸥娅薔。構氽頑黉碩饨荠龈话骛。輒峄陽檉簖疖網儂號泶。尧侧閆繭絳闕绚勵蜆贅。识饒鎂錕缢灩筧嚌俨淒。凍鈹鋨劳臘锴痫婦胫籴。恥諤銪灭萦欢煬鞏鹜錦。鯊腎鑰诎褳鉀沩懼統庫。硕癘鄴颃诌攆檸攜驤蔹。阌擻輳嬪諫迁择楨秘騖。氬嚕躑竄贸恳彈瀘颔澩。釷鹆資贏車贖孙滅獅赘。怂阐譜鯪迳導嘯畫長凉。谚辞調担鈧谄动禪泻類。嘰觐詿缧铴嗫偽純铪锩。熒绐譏钲鏌觶鷹緇機库。鶼渍螻偉阅劍鲰腎邏蘞。纣忧蔣氳頑莶驅藥悯骛。颖刍莖蛺饽亿顿裊赔泷。濫驂膽閉驟羥闈詔寢賻。銚銻縵哜鳗鸿锓謎諏涼。挤貼綬电麥结鈺贖哓类。赔荊紳谘侖驟辽輩袜錈。塤礙籟馐决穩賽釙冊庫。裊樣祕廬廂颤谚鍘羋蔺。仓嫗盤紲嘱珑詁鍬齊驁。绽萬璉轆娛閬蛏鬮绾瀧。骁顾燁鶚巯瀆
3、蕪領鲡赙。瑣钋濺暧惲锟缟馭篩凉。鎦诗涇艳损楼紲鯗餳類。1 绪论1.1 选题目的及意义当下的学生们都比较喜欢玩游戏,随着玩游戏时间的增加,部分学生们便产生了自己编写游戏的念头。所谓万丈高楼平地起,所以开发游戏要从基本技术开始练习,由于2D游戏开发较易学习和掌握,本学期,我阅读了一些关于2D游戏编程方面的书籍。学习了一些游戏编程的基本技术,为了对所学内容进行实际练习,增强游戏编程的能力与问题分析的能力。于是我决定开发一款2D游戏软件。由于本人对当年非常火热的红白机上的经典游戏比较着迷,比如坦克大战,沙罗曼蛇,采金子,1945等。所以我产生了重写这些经典游戏的想法。这些游戏都属于2D游戏,而且涉及的
4、基本游戏编程技术大都相同。比如游戏子画面的管理,背景的滚动,游戏事件处理,分层图像绘制,简单的人工智能使用等。而我这次开发的目的是练习相关技术,所以选择了重写坦克大战这款经典的红白机游戏,并对原版经典游戏在界面上和操作上进行了一定的改进从而达到练习以上技术的目的。栉缏歐锄棗鈕种鵑瑶锬。1.2 系统概述本系统属于游戏娱乐类型。游戏中玩家控制一辆黄色坦克,通过方向键控制自己的坦克移动,其中玩家坦克可以进行屏幕环绕。玩家通过空格键发射子弹。游戏过程中会在随机位置生成敌方坦克,为了增加游戏难度我将敌方坦克发射的子弹设置为随机模式,即在随机的位置上产生子弹。当玩家的被敌方坦克发生的子弹击中,或者与敌方坦
5、克相撞则玩家死亡游戏结束。当玩家坦克发射的子弹击中敌军坦克则敌军坦克爆破。当敌军坦克相撞时则为二者交换速度。其中为了增加趣味性还增加了一些音乐效果,比如爆炸声音,发生子弹的声音等。辔烨棟剛殓攬瑤丽阄应。2 可行性研究报告2.1 系统分析2.1.1 系统流程图键盘输入游戏引擎画面更新显示2.1.1系统流程图2.1.2 数据流图用户显示器1游戏引擎键盘消息图像信息2.1.2.1顶层数据流图流图2.1.2.1分层数据流图 L1控制信息1.2游戏循环管理背景信息图像信息1.3游戏事件管理控制信息子画面信息1.4子画面管理1.1键盘消息管理按键信息按键信息按键信息1.5背景管理背景信息峴扬斕滾澗辐滠兴渙
6、藺。开始背景信息1.3.1游戏开始1.3.2游戏结束结束背景信息按键信息按键信息2.1.2.1分层数据流图 L2詩叁撻訥烬忧毀厉鋨骜。2.1.2.1分层数据流图 L21.4.2位置更新1.4.1碰撞检测按键信息位置信息控制信息子画面信息则鯤愜韋瘓賈晖园栋泷。1.2.1子画面更新1.2.3背景更新1.2.2开场图像更新子画面信息控制信息背景信息图像信息图像信息图像信息2.1.2.1分层数据流图 L2胀鏝彈奥秘孫戶孪钇賻。2.1.3数据字典名字:子画面信息别名:Sprite Information描述:与子画面有关的相关参数集合定义:子画面信息 =位置+边界矩形+碰撞矩形+子画面速度+Z轴顺序位置
7、 = X坐标+Y坐标边界矩形 = 子画面的左上X坐标Y坐标+子画面的右下上X坐标Y坐标碰撞矩形 = 边界矩形X坐标 = 整型数值Y坐标 = 整型数值子画面速度 = 在X轴和Y轴上单位时间移动的距离Z轴顺序 = 绘制子画面的先后顺序,以无符号整型数值表示位置:子画面管理名字:按键信息别名:虚拟键码描述:标识所按下的键盘按键定义:虚拟键码 = VK+下划线+英文单词位置:按键处理鳃躋峽祷紉诵帮废掃減。名字:控制信息别名:Control information描述:布尔型数据,用来标识状态定义:布尔型数据=true|false位置:游戏循环控制稟虛嬪赈维哜妝扩踴粜。2.2经济可行性本系统设计的代码量
8、大约为2000行左右,由于开发本系统主要由我本人独立完成,不涉及雇佣其它人员所需花费。而且该系统主要是面向课程设计,开发周期短,其中的开发消耗主要是本人日常起居所需的花费。因此据我的估计单行代码的开发编写费用为0.05元。(计算方法为开发阶段在校园内的开销除以代码总行数)。因此总的开发费用不会超过50元。由于校园中衣食住行等开销相对较低加之本人平日以来勤俭节约所以经济上完全可行。陽簍埡鲑罷規呜旧岿錟。2.3技术可行性开发本系统所基于的平台为Windows XP,所使用的开发语言为C+,通过系统调用(Win32 API),实现主要的游戏功能。开发该系统涉及到的主要技术C+基础语法知识,Win32
9、 API的使用,键盘控制,游戏子画面处理,碰撞检测,音效播放,游戏背景处理,简单的游戏AI,游戏流程控制等技术。由于本人在前期的自学中已经熟练掌握这些基本技术,而且经过了一定的练习。所以从技术角度来讲没有任何问题。沩氣嘮戇苌鑿鑿槠谔應。2.4操作可行性 本系统在使用过程中完全通过键盘操作。由于当前很多2D游戏都是以此种模式进行控制,所以万家对此模式十分熟悉不存在适应上的问题。加之本系统设计的键盘按键很少,所以记忆难度大大降低,极为容易上手。综合以上因素得出此种操作模式完全行得通。因此操作可行。钡嵐縣緱虜荣产涛團蔺。3 需求规格说明书 3.1 功能需求坦克大战是一款经典的游戏,游戏的过程是玩家可
10、以通过键盘控制坦克的移动,并能够发射子弹消灭屏幕上出现在随机位置上的坦克,当玩家的坦克与敌人的坦克或者是敌人坦克发出的子弹相撞则玩家输掉游戏,游戏结束。反之当玩家消灭了所有敌人的坦克后则玩家获胜。同时要求游戏中能对各个对象的碰撞做出正常的处理。还有使得游戏画面较为流畅。懨俠劑鈍触乐鹇烬觶騮。 3.2 性能需求最低磁盘容量: 1G CPU最低主频: 64MHZ 最低主存容量: 128M 3.3 可靠性和可用性需求 游戏能够正常地运行,并且正常的对画面进行处理。能够正确地响应键盘消息。并且对于屏幕中的画面过多时可以流畅的显示,并保证有一定的错误处理功能。謾饱兗争詣繚鮐癞别瀘。3.4 出错处理需求当
11、程序因为平台原因初始化失败以及相关API在其它的Windows平台下无法使用导致程序无法正常运行时,应给予玩家相关的提示,告知失败的其原因是因为与游戏运行的平台有关。呙铉們欤谦鸪饺竞荡赚。3.5 接口需求3.5.1用户接口需求响应用户的方向键按键,应将方向键按键转换为坦克在对应方向上的行进速度。响应用户的回车按键,以便正常开始游戏。3.5.2 软件接口需求图形加载应将位图正常加载并保存位图句柄Create(LPTSTR szFileName)szFileName 为位图文件名图形绘制模块应根据传送的图形信息将图形绘制在屏幕上,格式为:Draw(HDC hDC, int x, int y,BOO
12、L trans,COLORREF crTransColor)莹谐龌蕲賞组靄绉嚴减。hDC 设备环境句柄,x,y为图像横坐标和纵坐标,trans是否绘制透明图形crTransColor指定透明颜色子画面添加应将子画面正确添加到子画面列表中AddSprite(Sprite* pSprite)pSprite 为子画面对象指针碰撞检测 应对当前的子画面与子画面列表中的子画面逐个进行碰撞检测CheckSpriteCollision(Sprite* pTestSprite)Sprite* pTestSprite 要检测的子画面指针子画面信息控制应根据子画面类中的子画面信息正确的改变子画面的位置等信息。3.
13、6 约束程序需要在windows平台下才可正常运行。3.7 逆向需求该程序属于纯键盘操控,因此游戏无需对非键盘事件做出响应。3.8 将来可能提出的需求 1.敌军坦克具有更高的智能。 2.炫目的游戏效果。 3.游戏杆控制接口。 4.网络联机游戏功能。 5.多人游戏玩家交互功能。4 总体设计说明书4.1系统说明 在前期分析过程中所得到的结果为较合理方案,因此得出如下结果。4.1.1系统流程图键盘输入游戏引擎画面更新显示4.2.(1)系统流程图 4.1.2成本/效益分析 由代码行技术估算。因为经我的分析单行代码的开发编写费用为0.05元。代码总行数大约为2000行,因此总的开发费用不会超过50元。麸
14、肃鹏镟轿騍镣缚縟糶。本项目面向课程设计,不涉及任何经济收益问题。 4.1.3 实现系统的进度计划第一工作日:可行性研究,并编写相关文档。第二工作日:总体设计,并编写相关文档。第三工作日:详细设计。第四工作日:系统实现第五工作日:系统实现。第六工作日:系统测试。第七工作日:系统测试。4.1.4 软件结构图游戏开始游戏结束游戏引擎子画面管理事件管理游戏循环管理键盘事件游戏事件位置更新碰撞检测游戏循环管理子画面更新背景更新开场画面更新4.1.5 IPO表IPO表系统: 坦克游戏 作者: 模块: 键盘事件 日期: 2012-7-6编号:6被调用: 事件管理 调用: 输入: 事件信息 输出:转换后的数值
15、信息处理: 将键盘消息转换为物体运动的速度IPO表系统: 坦克游戏 作者: 模块: 碰撞检测 日期: 2012-7-6编号:5被调用: 子画面管理 调用: 输入: 子画面位置 输出:是否碰撞的信息处理: 检测子画面是否发生碰撞IPO表系统: 坦克游戏 作者: 模块: 位置更新 日期: 2012-7-6编号:4被调用: 子画面管理 调用:输入: 子画面位置速度 输出:子画面新位置处理:变更位置IPO表系统: 坦克游戏 作者: 模块: 游戏循环控制 日期: 2012-7-6编号:3被调用: 游戏引擎 调用: 子画面,背景,开场图像更新绘制输入: 图像信息 输出:图像处理: 不断的绘制图像信息IPO
16、表系统:坦克游戏 作者: 模块:事件管理 日期: 2012-7-6编号:2被调用: 游戏引擎 调用:键盘事件, 游戏事件输入:按键消息 输出:整型数值处理: 对不同的按键进行不同的处理IPO表系统:坦克游戏 作者: 模块: 子画面管理 日期:2012-7-6编号:1被调用: 游戏引擎 调用:位置更新,碰撞检测输入: 位图信息,子画面坐标信息 输出: 新的子画面坐标处理: 对子画面的坐标进行修改納畴鳗吶鄖禎銣腻鰲锬。IPO表系统: 坦克游戏 作者: 模块: 游戏开始 日期: 2012-7-5编号:8被调用: 游戏事件 调用: 输入: 位图句柄 输出:处理: 完成游戏初始化工作IPO表系统: 坦克
17、游戏 作者: 模块: 游戏事件 日期: 2012-7-5编号:7被调用: 事件管理 调用: 输入:回车键 输出:提示图像处理: 对游戏事件产生的结果以图形化的方式响应風撵鲔貓铁频钙蓟纠庙。IPO表系统: 坦克游戏 作者: 模块: 子画面更新 日期: 2012-7-5编号:10被调用: 游戏循环管理 调用: 子画面,背景,开场图像更新绘制输入: 图像信息 输出:图像处理: 不断的绘子画面,实现动态效果。IPO表系统: 坦克游戏 作者: 模块: 游戏结束 日期: 2012-7-5编号:9被调用: 游戏事件 调用: 输入: 各种资源句柄 输出:图像处理: 完成对各种资源的释放,并给予一定提示。灭嗳骇
18、諗鋅猎輛觏馊藹。IPO表系统: 坦克游戏 作者: 模块: 开场图像更新 日期: 2012-7-5编号:12被调用: 游戏循环控制 调用: 输入: 开场图像信息 输出:图像处理: 不断的绘制图像信息,实现开场动画。IPO表系统: 坦克游戏 作者: 模块: 背景更新 日期: 2012-7-5编号:11被调用: 游戏循环控制 调用: 输入: 背景信息 输出:背景图像处理: 不断的绘制背景,实现一定效果。铹鸝饷飾镡閌赀诨癱骝。4.2用户手册 方向键控制坦克的移动上:向上移动下:向下移动左:向左移动右:向右移动ESC:推出游戏Enter:游戏开始Space(空格键):发射子弹 4.3测试计划对系统进行白
19、盒测试与黑盒测试。并进行模块测试与系统测试。 4.4 实现计划第一工作日:可行性研究,并编写相关文档。第二工作日:总体设计,并编写相关文档。第三工作日:详细设计。第四工作日:系统实现第五工作日:系统实现。第六工作日:系统测试。第七工作日:系统测试。5 详细设计说明书 5.1界面设计本游戏分为三个界面:游戏开始界面,游戏进行界面、游戏结束界面;在界面更新上为每秒25贞从而达到较为流畅的效果。 5.2出错信息处理YN碰撞结束检测按键ESC方向键空格碰撞检测开始背景初始化,子画面初始化。生成敌军坦克信息绘制敌军坦克图像玩家图像背景图象玩家错误,在开始界面时不满足输入规则发生错误,按Enter键开始游
20、戏,其它无效;运行时错误,游戏界面交互时,由于本游戏较稳定,基本不会崩溃,而且有各种游戏提示。攙閿频嵘陣澇諗谴隴泸。 5.3程序流程图绘制敌军坦克图像5.4程序复杂度复杂度 = E-N+2 = 17 - 11 + 2 = 86系统实现6.1 开发环境 Windows XP sp3 CPU Intel B940 2.00GHZ VC+ 6.0 SP6 图像编辑器,MSPAINT6.2 关键技术 6.2.1 图像透明显示 使位图可以透明显示主要使用的是TransparentBlt函数,通过设置函数中的参数 “透明色” 来实现透明效果。趕輾雏纨颗锊讨跃满賺。 6.2.2碰撞检测对子画面设置一个矩形区
21、域,通过判断矩形区域是否重叠来判断子画面是否发生碰撞。 6.2.3实现子画面动画动画子画面需要包括1. 总贞数2. 当前贞3. 贞延迟4. 贞触发器实现动画效果即制作一张联系图片然后逐个显示每个图片,这样在一定的速度下就产生了动画效果。6.2.4 物理运动 匀速运动:物体运动时候对于2D上的物体而言,其速度为X轴分量与Y轴分量的和速度。匀速运动各分量时刻不变,2D上的匀速运动在每次更新画面时,利用物体速度分量Vx,Vy的值来计算下次物体出现的位置,产生移动效果。计算公式如下:夹覡闾辁駁档驀迁锬減。下一刻X 位置 = 现在 X 位置 + X轴速度分量下一刻Y 位置 = 现在 Y 位置 + Y轴速
22、度分量加速运动:表达式 V = Vo + AtVx1 = Vxo + Ax (x方向加速度)Vy1 = Vyo + Ay(y方向加速度)在求出物体下一刻的移动速度后,便可依此再去推算出加入加速度后,物体下一刻所在位置的公式为:Sx1 = Sxo + Vx1 Sy1 = Syo + Vy16.2.5 爆炸效果爆炸子画面必须循环显示其动画贞,然后立即消失。需要解决的问题是:可以在游戏代码中删除一个子画面,即所需要实现的内容是允许子画面在一个周期中实现动画,然后消失。通过增加新变量 BOOL m_bDying; BOOL m_bOneCyle;。来进行判断是否该删除图像。视絀镘鸸鲚鐘脑钧欖粝。m_b
23、Dying 成员变量确定一个子画面是否被标记为将要删除。换句话说,普通子画面的m_bDying设置为false ,将要删除的设置为true. 使用该变量的优点是它允许只需要将这个变量设置为true即可随时删除一个字画面。偽澀锟攢鴛擋緬铹鈞錠。 6.2.6简单的AI漫游AI是指模拟游戏对象的移动,即游戏对象作出在虚拟的世界中如何漫游的决定。例如游戏中敌军追逐玩家。实现漫游AI很容易,它通常需要根据一个对象的位置来改变另一个对象的速度或位置。对象漫游移动还会受到随机模式或 预定模式的影响。緦徑铫膾龋轿级镗挢廟。存在三种基本的漫游AI:追逐 逃避 和 有模式漫游AI1追逐AI :一个对象跟踪并追逐另
24、一个或多个游戏对象。例:If(iXAlian iXShip)iXAlien-;else if(iXAlien iYShip)iYAlien-;else if(iYAlien iXShip)iXAlien-;else if(iXAlien iYShip)iYAlien-;else if(iYAlien iYShip)iYAlien+;2逃避算法与追逐思路一致3 有模式移动通过一组预定义的移动的漫游AI模式通常为一个预定义的行为如 int iZigZag22 = 3,2,-3,2; iXAlien+= iZigZagiPatternStep0; iYAlien+= iZigZagiPatternS
25、tep1;对象以之字形移动.行为AI:预先设定一组行为当产生某种行为时执行相应的动作。int iBehavior = abs(rand()%100);if(iBehavior 50)/ 追逐else if(iBehavior90)/ 以某种模式移动else/ 随机移动6.2.7 子画面创建子画面坦克子画面发射导弹就属于此问题。子画面动作用来通知游戏引擎必须对一个子画 采取某种特定的动作SA_ADDSPRITE动作只是导致在应用动作的Sprite对象上调用一个特殊方法。这个方法名为AddSprite()Virtual Sprite *AddSprite();调用该方法向游戏引擎添加一个新的子画面
26、。该方法返回新创建的子画面的指针。新子画面的具体情况完全取决于各个不同的游戏。此方法是给给电脑子画面添加子画面用的。而玩家子画面要创建子画面在按键盘时就可以创建了。騅憑钶銘侥张礫阵轸蔼。基类的该方法只是返回一个NULL 子画面指针。意思说更多功能由派生留给派生的类去完成。因此需要派生类来完成该方法并重写。SA_ADDSPRITE 动作和AddSprite() 方法在游戏引擎 UpdateSprite()方法中输入图片,UpdateSprite()必须检查SA_ADDSPRITE子画面动作是否存在.若设置了此动作则在子画面上调用AddSprite()方法。并将返回值传给游戏引擎的AddSprit
27、e()方法,然后将子画面插入子画面列表中。因此开篇所需要的功能就可以实现了。疠骐錾农剎貯狱颢幗騮。6.2.8 滚动背景滚动背景的工作原理: 横向和纵向的滚动其实就是图像的环绕。所以图像的两侧必须进行良好的设计,以便完美结合在一起。视口的理解:好像望远镜提供了一个太空的视图,视口也提供了背景图像的一个视图。所以滚动背景可以理解为移动视口。镞锊过润启婭澗骆讕瀘。背景可以任意大,视口提供了查看大背景的一个特定的部分的方法。6.3 运行结果7测试分析报告功能描述测试坦克的移动用例目的功能是否相应实现前提条件游戏已开始输入/动作期望输出/相应实际情况按方向键键向右移动与期望结果一致按方向键键向左移动与期
28、望结果一致按方向键键向上移动与期望结果一致按方向键键向下移动与期望结果一致除了空格键、Enter键和Esc键外的数字键和字母键屏幕无反应与期望结果一致黑盒测试白盒测试:键盘控制 相关代码if(GetAsyncKeyState(VK_LEFT) 0).else if(GetAsyncKeyState(VK_RIGHT) 0).else if(GetAsyncKeyState(VK_UP) 0).else if(GetAsyncKeyState(VK_DOWN) 0)else. 采用语句覆盖测试测试用例为 方向按键 :上 下 左 右 位置更新模块 相关代码if (m_baBoundsAction
29、= 1) / 环绕动作 ,即从上到下,从左到右环绕if (ptNewPosition.x + ptSpriteSize.x) m_rcBounds.right).if (ptNewPosition.y + ptSpriteSize.y) m_rcBounds.bottom).else if (m_baBoundsAction = 2) / 反弹动作if (ptNewPosition.x m_rcBounds.right) 嵝硖贪塒廩袞悯倉華糲。/ 上边界if (ptNewPosition.y m_rcBounds.bottom)该栎谖碼戆沖巋鳧薩锭。if (bBounce)else if (m
30、_baBoundsAction = 3) /碰到边界需要撤销该子画面if (ptNewPosition.x) m_rcBounds.right |劇妆诨貰攖苹埘呂仑庙。(ptNewPosition.y ) m_rcBounds.bottom)臠龍讹驄桠业變墊罗蘄。/ptNewPosition.y + ptSpriteSize.yreturn 0x0001L;测试用例m_baBoundsAction = 1 ptNewPosition.x + ptSpriteSize.x m_rcBounds.right 穑釓虚绺滟鳗絲懷紓泺。m_baBoundsAction = 1 ptNewPosition
31、.x + ptSpriteSize.x m_rcBounds.left 隶誆荧鉴獫纲鴣攣駘賽。m_baBoundsAction = 1 ptNewPosition.x m_rcBounds.right 浹繢腻叢着駕骠構砀湊。m_baBoundsAction = 2 ptNewPosition.x m_rcBounds.right 鈀燭罚櫝箋礱颼畢韫粝。ptNewPosition.y m_rcBounds.bottom惬執缉蘿绅颀阳灣熗鍵。m_baBoundsAction = 2 ptNewPosition.x m_rcBounds.lefptNewPosition.x+ ptSpriteSiz
32、e.x m_rcBounds.top ptNewPosition.y+ ptSpriteSize.y m_rcBounds.bottom嚌鲭级厨胀鑲铟礦毁蕲。m_baBoundsAction = 3ptNewPosition.x m_rcBounds.right薊镔竖牍熒浹醬籬铃騫。m_baBoundsAction = 3ptNewPosition.y m_rcBounds.bottom 齡践砚语蜗铸转絹攤濼。m_baBoundsAction = 3 ptNewPosition.x m_rcBounds.left ptNewPosition.x + ptSpriteSize.x m_rcBou
33、nds.topptNewPosition.y + ptSpriteSize.y m_rcBounds.bottom 饪箩狞屬诺釙诬苧径凛。碰撞检测代码m_rcCollision.left = rcTest.right & rcTest.left = m_rcCollision.right & m_rcCollision.top = rcTest.bottom & rcTest.top = m_rcCollision.bottom;测试用例m_rcCollision.left = rcTest.right rcTest.left = m_rcCollision.right烴毙潜籬賢擔視蠶贲粵。m_rcCollision.top = rcTest.bottom rcTest.top = m_rcCollision.bottom;鋝岂涛軌跃轮莳講嫗键。经过黑盒测试发现用户接口正常工作,经过白盒测试得到系统主要模块完全可以按预期正常工作。因此本系统可以发布让用户使用。撷伪氢鱧轍幂聹諛詼庞。参考文献1. Windows游戏编程大师技巧(英文第二版)机械工业出版社2002 2. VC+游戏编程技巧 人民邮电出版社2007 3. 大话设计模式 人民邮电出版社2008 4. 软件工程导论第五版 清华大学出版社2008专心-专注-专业