目录
1.系统简介
1.1设计背景
迷宫是一个经典的游戏,陪伴了几代人的童年,借此机会,在锻炼自身编程水平的同时还原这一经典游戏。
1.2开发工具及环境
(1)开发工具及介绍
IntelliJ IDEA2021是一款专业的JAVA IDE编程工具,最新版本支持git、svn、github等版本控制工具,并整合了智能代码助手、代码自动提示等功能,软件的强大的静态代码分析和人体工程学设计,能够让用户的开发设计变得简单轻松。同时,它也被认为是当前Java开发效率最快的IDE工具。
(2)开发环境:window10系统、IntelliJ IDEA2021、JDK17。
2.系统分析与设计
2.1设计目的
随机生成迷宫并且尝试用两种方法生成迷宫和解迷宫,支持玩家走迷宫和系统走迷宫,玩家走迷宫需通过键盘方向键控制;系统走迷宫需要输出走到迷宫出口的最优解。
2.2功能需求
(1)迷宫游戏是非常经典的游戏,在该题中要求随机生成一个迷宫,并求解迷宫;
(2)要求查找并理解迷宫生成的算法,并尝试用两种不同的算法来生成随机的迷宫。
(3)要求迷宫游戏支持玩家走迷宫,和系统走迷宫路径两种模式。玩家走迷宫,通过键盘方向键控制,输出玩家当前位置到迷宫出口的最优路径。设计交互友好的游戏图形界面。
2.3系统功能代码设计
2.3.1算法说明
主要思路是从图中一个未访问的顶点 V 开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底...,不断递归重复此过程,直到所有的顶点都遍历完成,它的特点是不撞南墙不回头,先走完一条路,再换一条路继续走。
树是图的一种特例(连通无环的图就是树),接下来我们来看看树用深度优先遍历该怎么遍历。
1、我们从根节点 1 开始遍历,它相邻的节点有 2,3,4,先遍历节点 2,再遍历 2 的子节点 5,然后再遍历 5 的子节点 9。
2、上图中一条路已经走到底了(9是叶子节点,再无可遍历的节点),此时就从 9 回退到上一个节点 5,看下节点 5 是否还有除 9 以外的节点,没有继续回退到 2,2 也没有除 5 以外的节点,回退到 1,1 有除 2 以外的节点 3,所以从节点 3 开始进行深度优先遍历,如下:
3、同理从 10 开始往上回溯到 6, 6 没有除 10 以外的子节点,再往上回溯,发现 3 有除 6 以外的子点 7,所以此时会遍历 7。
3、从 7 往上回溯到 3, 1,发现 1 还有节点 4 未遍历,所以此时沿着 4, 8 进行遍历,这样就遍历完成了。
完整的节点的遍历顺序如下(节点上的的蓝色数字代表):