引言
迷宫游戏是一种益智游戏,它包含的不仅是一个游戏的世界,同时也是一个学习的世界。一款好的游戏可以让儿童的思维和手眼协调能力都得到提高,可以使他们的身心得到放松的同时还能学到有用的知识。计算机的出现使得游戏的开放获得了翻天覆地的变化,先进的游戏开发技术可以模仿现实中不能达到的场景,具有更细节的仿真效果。但是随着电子游戏的不断发展,电子游戏越发偏离了真正游戏的意义。它们使儿童沉迷于游戏所构造的虚拟世界,脱离了游戏使儿童得到放松、愉悦、学习的初衷。于是,使用计算机技术还原传统游戏,使它们方便、快捷、更容易实现,而不失去游戏设计的初衷,便成了我们开发迷宫游戏软件的初衷。MFC (Microsoft Foundation Class Library)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C++提供了相应的工具来完成这个
工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应 用程序特定的逻辑。
第二节 迷宫游戏设计算法
迷宫的本质就是一幅地图,因此程序的核心
问题就是如何生成一副二维地图。步鄹如下:首先,生成地图的框架,即定义地图的大小,得到地图的外围边界;其次,在图中生成一条连接起点和终点的通路,保证玩家可以走出迷宫;然后,保证地图的强连通性,在图中尽可能多地生成一些围墙,构成多条"死"路,用于迷惑玩家;最后,用连线的方法画出迷宫。
(可以加一些游戏规则和玩法的描述,如通过键盘控制移动方向,显示正确路径,倒计时功能等,写的越详细越好)
2.1 生成迷宫地图框架
普通的地图都是按块来划分的,定义一个平面地图的大小其实只需定义一个二维数组即可,比如说定义一个6*4的地图,那么就得定义一个[4][6]数组,数组的数据表示地图中的块,再加上地图的边界,所以一个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的路径。因此,需要遍历地图上所有未赋值的点,随机地为这些点赋值,生成