资源描述:
《学年论文-王伟-定稿》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、安徽三联学院本科专业学年论文题目:迷宫游戏软件设计姓名:王伟专业:计算机科学与技术班级:08级本科2班指导教师:王良燕完成日期:2010年12月31日题目:迷宫游戏软件设计摘要本文运用数据结构和C++编程知识设计实现了一个迷宫游戏,并对迷宫的界面做了详细的设计规划。界面设计基于人机交互的原则,运用MFC、GDI等技术实现。利用本课题设计的机会可以熟悉c++语言的各种特性,锻炼程序设计的实践能力,熟悉图形用户界面的开发,并巩固数据结构和算法等课程的学习成果。关键词:迷宫;游戏软件开发;界面设计;MFC;GDIIITitle:MazegamesoftwaredesignAbst
2、ractThepaperUSESdatastructureandc++programmingknowledgedesignedandimplementedamazegame,andthelabyrinthinterfacetodoadetaileddesignplanning.Interfacedesignbasedontheprincipleofhuman-computerinteraction,usingMFC,GDIetctechnologyrealization.Usingthistopicdesignopportunitiescanbefamiliarwithva
3、riouscharacteristicsofthec++language,exerciseprogramdesignabilityofpractice,familiarwithgraphicaluserinterface,thedevelopment,andconsolidatingdatastructureandalgorithmssuchcourselearningresults.Keywords:Maze,Gamesoftwaredevelopment,Interfacedesign,MFC,GDIII目录第一节引言1第二节迷宫游戏设计算法22.1概述22.2迷宫地图
4、生成22.3迷宫路径搜索3第三节界面设计43.1界面设计原则43.2界面绘制技术53.3迷宫地图及路径绘制53.4运行结果6第四节结束语89第一节引言迷宫游戏是一种益智游戏,它包含的不仅是一个游戏的世界,同时也是一个学习的世界。计算机的出现使得游戏的开发获得了翻天覆地的变化,先进的游戏开发技术可以模仿现实中不能达到的场景,具有更细节的仿真效果。根据所学的计算机知识,我们开发了一款二维迷宫游戏。这款游戏能够随机生成迷宫地图,自动生成迷宫路径,用户还可以通过键盘控制移动方向自己在迷宫中行走。我们在GDI,MFC等软件开发技术的基础上实现了上述功能并完成了整个界面的设计。9第二节
5、迷宫游戏设计算法2.1概述一款好的迷宫游戏应该包括完整的界面设计,以提供给用户一个良好的人机交互界面。程序要具有较强可玩性,因此功能要明确。我们的这款迷宫游戏程序设计了以下一些基本的功能:(1)能随机生成二维迷宫地图(2)程序能自动算出走出迷宫的正确路径(3)根据生成的迷宫结构绘制出迷宫界面(4)通过键盘控制走迷宫的行进路线并实时绘制其中,迷宫地图的生成和路径的自动计算属于算法设计,其余功能都属于界面设计模块。2.2迷宫地图生成迷宫的本质就是一幅地图,因此程序的核心问题就是如何生成一副二维地图。步鄹如下:首先,生成地图的框架,即定义地图的大小,得到地图的外围边界;其次,在图
6、中生成一条连接起点和终点的通路,保证玩家可以走出迷宫;然后,保证地图的强连通性,在图中尽可能多地生成一些围墙,构成多条“死”路,用于迷惑玩家;最后,用连线的方法画出迷宫。普通的地图都是按块来划分的,定义一个平面地图的大小其实只需定义一个二维数组即可,比如说定义一个6*4的地图,那么就得定义一个[4][6]数组,数组的数据表示地图中的块,再加上地图的边界,所以一个ySize*xSize的地图由(xSize+2)*(ySize+2)个块构成,玩家需要从地图的右下方走到左下方。设起点的坐标是(x1,y1),终点的坐标是(x2,y2),(x,y)表示一个在图中移动的点。(x,y)的
7、初始值等于起点坐标,即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)已经到达终点