资源预览内容
第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
第9页 / 共14页
第10页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
安 徽 三 联 学 院本 科 专 业 学 年 论 文题 目:迷 宫 游 戏 软 件 设 计姓 名: 专 业: 计算机科学与技术 班 级: 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第四节 结束语810第一节 引 言迷宫游戏是一种益智游戏,它包含的不仅是一个游戏的世界,同时也是一个学习的世界。计算机的出现使得游戏的开发获得了翻天覆地的变化,先进的游戏开发技术可以模仿现实中不能达到的场景,具有更细节的仿真效果。根据所学的计算机知识,我们开发了一款二维迷宫游戏。这款游戏能够随机生成迷宫地图,自动生成迷宫路径,用户还可以通过键盘控制移动方向自己在迷宫中行走。我们在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,
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号