已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
安 徽 三 联 学 院本 科 专 业 学 年 论 文题 目:迷 宫 游 戏 软 件 设 计姓 名: 王 伟 专 业: 计算机科学与技术 班 级: 08级本科2班 指导教师: 王良燕 完成日期:2010年12月31日题目:迷宫游戏软件设计摘 要本文运用数据结构和C+编程知识设计实现了一个迷宫游戏,并对迷宫的界面做了详细的设计规划。界面设计基于人机交互的原则,运用MFC、GDI等技术实现。利用本课题设计的机会可以熟悉c+语言的各种特性,锻炼程序设计的实践能力,熟悉图形用户界面的开发,并巩固数据结构和算法等课程的学习成果。关键词:迷宫;游戏软件开发;界面设计;MFC; GDITitle: Maze game software designAbstractThe paper USES data structure and c + + programming knowledge designed and implemented a maze game, and the labyrinth interface to do a detailed design planning. Interface design based on the principle of human-computer interaction, using MFC, GDI etc technology realization. Using this topic design opportunities can be familiar with various characteristics of the c + + language, exercise program design ability of practice, familiar with graphical user interface, the development, and consolidating data structure and algorithms such course learning results.Keywords:Maze, Game software development, Interface design, MFC, GDIII目 录第一节 引 言1第二节 迷宫游戏设计算法22.1概述22.2迷宫地图生成22.3迷宫路径搜索3第三节 界面设计43.1 界面设计原则43.2界面绘制技术53.3迷宫地图及路径绘制53.4运行结果6第四节 结束语89第一节 引 言迷宫游戏是一种益智游戏,它包含的不仅是一个游戏的世界,同时也是一个学习的世界。计算机的出现使得游戏的开发获得了翻天覆地的变化,先进的游戏开发技术可以模仿现实中不能达到的场景,具有更细节的仿真效果。根据所学的计算机知识,我们开发了一款二维迷宫游戏。这款游戏能够随机生成迷宫地图,自动生成迷宫路径,用户还可以通过键盘控制移动方向自己在迷宫中行走。我们在GDI,MFC等软件开发技术的基础上实现了上述功能并完成了整个界面的设计。第二节 迷宫游戏设计算法2.1概述一款好的迷宫游戏应该包括完整的界面设计,以提供给用户一个良好的人机交互界面。程序要具有较强可玩性,因此功能要明确。我们的这款迷宫游戏程序设计了以下一些基本的功能:(1) 能随机生成二维迷宫地图(2) 程序能自动算出走出迷宫的正确路径(3) 根据生成的迷宫结构绘制出迷宫界面(4) 通过键盘控制走迷宫的行进路线并实时绘制其中,迷宫地图的生成和路径的自动计算属于算法设计,其余功能都属于界面设计模块。2.2迷宫地图生成迷宫的本质就是一幅地图,因此程序的核心问题就是如何生成一副二维地图。步鄹如下:首先,生成地图的框架,即定义地图的大小,得到地图的外围边界;其次,在图中生成一条连接起点和终点的通路,保证玩家可以走出迷宫;然后,保证地图的强连通性,在图中尽可能多地生成一些围墙,构成多条“死”路,用于迷惑玩家;最后,用连线的方法画出迷宫。普通的地图都是按块来划分的,定义一个平面地图的大小其实只需定义一个二维数组即可,比如说定义一个6*4的地图,那么就得定义一个46数组,数组的数据表示地图中的块,再加上地图的边界,所以一个ySize*xSize的地图由(xSize+2)*(ySize+2)个块构成, 玩家需要从地图的右下方走到左下方。设起点的坐标是(x1,y1),终点的坐标是(x2,y2),(x,y)表示一个在图中移动的点。(x,y)的初始值等于起点坐标,即x=x1,y=y1,s代表(x,y)移动的步数,s初始值为1,然后(x,y)就从迷宫的起点开始移动,上、下、左、右方向分别由数值0、1、2、3表示,每走一步的方向由随机数0、1、2、3决定。如果有路可走,即前进方向的块的数值为0,则前进到新的块,并令s=s+i.将s赋值给新块。如果四周均已无路可走(四周无数值为零的变量),则退回到s-1处,寻找s-1四周的变量还有没有路可走(s-1代表来时的路),如找到,则e=s-1,并且退回先前位置,继续找路前进,否则便结束算法。如果点(x,y)已经到达终点,同样会结束算法。当生成一条由起点到终点的随机路线后,地图上仍有封闭的区域,为了尽可能生成一些“死”路,用于迷惑玩家,需要生成强连通图。强连通图的概念是,在一个有向图G中,对于G的任意两个不同的顶点vi和vj,都存在从vi到vj及从vj到vi的路径。因此,需要遍历地图上所有未赋值的点,随机地为这些点赋值,生成更多的路线,注意赋值应大于1000,以便区分上一步得到的那些表示通路的块,如下图所示。 -1 -1 -1 -1 -1 -1 -1 -1 -1 1003 21 20 19 18 17 -1 -1 9 10 11 12 13 16 -1 -1 8 5 4 1002 14 15 -1 -1 7 6 3 2 1 1001 -1 -1 -1 -1 -1 -1 -1 -1 -1 图1迷宫地图数组定义2.3迷宫路径搜索迷宫路径的搜索采用图的遍历算法实现。图的遍历算法一般有两种:深度优先遍历和广度优先遍历。这两种方法最大的区别在于前者从顶点的第一个邻接点一直访问下去再访问顶点的第二个邻接点;后者从顶点开始访问该顶点的所有邻接点再依次向下,一层一层的访问。为了保证能快速计算出迷宫路径,我们的程序中采用的是图的深度优先遍历算法。第三节 界面设计3.1 界面设计原则迷宫的界面设计包括迷宫地图的绘制、正确路径的绘制和键盘控制几个部分。在设计界面时,我们遵循了如下的设计原则:(1).用户原则。人机界面设计首先要确立用户类型。划分类型可以从不同的角度,视实际情况而定。确定类型后要针对其特点预测他们不同界面的反应。这就是从多方面设计分析。(2) 信息最小量原则。人机界面设计要尽量减少用户记忆负担,采用有助于记忆的设计方案。(3) 帮助和提示原则。要对用户的操作命令作出反应,帮助用户处理问题。系统要设计有恢复出错现场的能力,在系统内部处理工作要有提示,尽量把主动权让给用户。界面设计并无固定的规则,但长期的探索发现以下的规则是我们应遵循的:(1) 人际界面的设计应该简洁易懂:人机界面不应该喧宾夺主。(2) 人机界面和游戏世界应该风格统一:从色彩到质感,应该和游戏世界保持一致协调。(3) 人机界面应该具有一定的自解释性与可学习性:所谓自解释性,是指一个设计能够通过自己的外表暗示自己的功能。(4) 人机界面应该与布局平衡:所有文字和图表应该摆放的恰到好处,形成一种平衡感。以往的游戏设计师们毫无平面设计的基础训练,在拜访图表和文字是随心所欲毫无章法,导致明显的布局不平衡和重要信息不突出。(5) 应该以一种动态的观点来设计人机界面:这一点也许不太好理解。人机界面设计与平面设计区分开来的最主要一点便是前者是动态的,而后者则为静态的设计平面设计的最终产品广告招贴,书籍封面,宣传册等等,这些都是人们去阅读的静态的页面。二人机界面的最终产品是软件用户界面,其实要用户通过动态的过程来使用的。设计人机界面,并不只是设计一个窗口菜单和控制面板,更重要的是设计一种动态的交互,在设计是必须将用户种种的行为可能性与动态视角的配合考虑在内。(6) 在设计用户界面时应该将效率问题考虑在内:玩家在玩游戏时的交互实现是通过以下这一过程实现的,1玩家意识到当前需要2玩家寻找命令3玩家输入指令4玩家电脑内部程序进行指令分析5电脑以可视化的形式进行反馈。(7) 人机界面设计的最高水平是达到无形入化:所谓人机界面的无形入化,就是说人机界面非常自然,非常好用,玩家用起来得心应手,全身心地投入到游戏世界中,仿佛人机界面是透明的了,似乎感受不到它的存在。3.2界面绘制技术图形绘制主要通过在MFC中调用GDI函数实现。GDI库中提供了丰富的2D图形绘制函数。我们的程序中主要用到以下两种基本类型图形的绘制:(1) 直线:它是所有向量图形绘制系统的基础。GDI支持直线、矩形等基本图形的绘制。所有更复杂的曲线可由折线代替,折线通过一组非常短的直线来定义一条曲线。线条用设备内容中选中的目前画笔绘制。 (2) 填入区域:当一系列直线或者曲线封闭了一个区域时,该区域可以使用目前GDI画刷对象进行填图。这个画刷可以是实心色彩、图案(可以是一系列的水平、垂直或者对角标记)或者是在区域内垂直或者水平重复的位图图像。MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C+提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。3.3迷宫地图及路径绘制对于迷宫的界面,通过树的算法实现,在MFC工程中新加一个类,再在此类中定义2个成员函数,编写界面的代码可以在其中添加,最后生成的树保存在一个成员变量中。再根据OnDraw()函数通过调用新加的类来获取生成树,然后根据它来绘制迷宫图,即界面。现在,上面已经得到了表示迷宫的数据,下面的任务就是把迷宫画出来。在平面图中用线段表示迷宫的围墙,因此迷宫可用画线的方法画出。首先,设置两个二维数组Hwall和Vwall,分别表示水平方向的线段和垂直方向的线段。例如,Hwallij表示块(i-1,j)和块(i,j)之间是否有连线,然后,根据相邻的数值决定Hwall或Vwall的值,以图1为例,块(3,1)的值为20,块(4,1)的值为19,两值相差1,两块连通,于是Hwallij=0,表示不用画线,块(1,3)的值为8;块(2,3)的值为5,差值大于1,两块不通,于是Hwallij=1,表示需要画线。由于生成的迷宫地图比较复杂,所以需要添加自动计算路径的功能给用户以提示。用户按功能键F4后即可在屏幕上显示出正确路径。这个功能通过在程序中添加MFC的键盘响应应函数来实现,当检测到用户按下F4之后,就执行正确路径绘制函数。正确路径的绘制根据现有的路径生成算法计算出的坐标进行连线绘制。用户自己控制行进的路线也是通过键盘响应函数来实现。即检测到“上”“下”“左”“右”中的任一键后即向相应的方向画出直线。这部分主要使用的是GDI中的画线函数MoveToEx()和LineTo()。此外,为了标明迷宫的入口和出口,我们在入口和出口位置分别绘制了两个小正方形,通过Rectangle()函数来实现。3.4运行结果 以下是程序运行时随机生成的一幅迷宫截图:以下是显示正确路径时的迷宫截图:当用户自己通过键盘控制行进路线时,我们选择黄色直线来绘制。程序运行时截图如下:第四节 结束语 本文介绍了一种迷宫游戏软件设计界面设计的方法,并指出了该方法的几个关键点,即如何生成连接起点和终点的通路,如何实现强连
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 检验科血液常规检测操作要点
- 康复医学科康复基础训练方案
- 康复医学科脊柱损伤康复运动训练
- SIMATIC-PCS7-标准培训-9-SFC编程
- 2025年投资项目管理师之投资建设项目决策押题练习试卷A卷附答案
- 2025年机械员之机械员基础知识通关提分题库及完整答案
- 2020-2025年一级注册建筑师之建筑材料与构造通关考试题库带答案解析
- 2025年上海世博园区卫生间保洁服务合同
- 2025花店花卉预订合同范本
- 2025年连锁加盟合同范本
- 宠物户外营地活动方案
- 期货课件培训
- 工厂行车吊装方案(3篇)
- 全球及2025-2030中国口腔CBCT行业前景动态与投资趋势预测报告版
- 零售业商品品类分类表
- 公务员运动会活动方案
- CJ/T 447-2014管道燃气自闭阀
- 煤炭大宗物资管理制度
- 科技论文写作 第2版 课件第6章 学位论文写作
- 2025-2030中国老年手机行业市场发展趋势与前景展望战略研究报告
- 上海市杨浦区2025届高三下学期二模考试英语试题(解析版)
评论
0/150
提交评论