Java综合实训报告-迷宫

上传人:第** 文档编号:37363912 上传时间:2018-04-15 格式:DOC 页数:20 大小:261KB
返回 下载 相关 举报
Java综合实训报告-迷宫_第1页
第1页 / 共20页
Java综合实训报告-迷宫_第2页
第2页 / 共20页
Java综合实训报告-迷宫_第3页
第3页 / 共20页
Java综合实训报告-迷宫_第4页
第4页 / 共20页
Java综合实训报告-迷宫_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《Java综合实训报告-迷宫》由会员分享,可在线阅读,更多相关《Java综合实训报告-迷宫(20页珍藏版)》请在金锄头文库上搜索。

1、嘉兴学院 Java 综合实训报告1目目 录录1. 需求分析需求分析.22. 概要设计概要设计.22.1功能图.3 2.2系统流程图.43. 详细设计详细设计.43.1类关系图.5 3.2类设计图.5 类 Maze.5 类 MazeGrid .6 3.3主要功能详细顺序图.84. 主要程序实现主要程序实现.85. 测试与结果测试与结果.166. 心得体会心得体会.19参考文献参考文献.20嘉兴学院 Java 综合实训报告2迷宫游戏的设计与实现迷宫游戏的设计与实现1. 需求分析需求分析基于 Java 实现的简易迷宫系统,通过判断所走路径是 wall 还是 road,来实现从入口到出口的整个流程。运

2、行该程序,可以选择默认状态下自动生成迷宫,亦可选择重新生成迷宫,通过自动寻找行走路径,最终显示当前迷宫运行时间。2. 概要设计概要设计该程序设计是解决迷宫求解的问题,从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,显然需要用一个后进先出的结构来保存从入口到当前位置的路径。因此,在求迷宫通路的算法中要应用“栈”的思想假设“当前位置”指的是“在搜索过程中的某一时刻所在图中某个方块位置” ,则求迷宫中一条路径的算法的基本思想是:若当前位置“可通” ,则纳入“当前路径” ,并继续朝“下一位

3、置”探索,即切换“下一位置”为“当前位置” ,如此重复直至到达出口;若当前位置“不可通” ,则应顺着“来向”退回到“前一通道块” ,然后朝着除“来向”之外的其他方向继续探索;若该通道块的四周 4 个方块均“不可通” ,则应从“当前路径”上删除该通道块。所谓“下一位置”指的是当前位置四周 4 个方向(东、南、西、北)上相邻的方块。假设以栈 S 记录“当前路径” ,则栈顶中存放的是“当前路径上最后一个通道块” 。由此, “纳入路径”的操作即为“当前位置入栈” ”;“从当前路径上删除前一通道块”的操作即为“出栈” 。嘉兴学院 Java 综合实训报告32.1 功能图功能图嘉兴学院 Java 综合实训报

4、告42.2 系统流程图系统流程图3. 详细设计详细设计在设计迷宫游戏时,编写了两个 Java 源文件 Maze.java 和MazeGrid.java。Maze.java 中 main 类实现弹出游戏耗时窗口功能,createMap 类用于实现生成迷宫功能,goMaze 类用于实现走迷宫功能,refreshMap 类实现刷新迷宫地图功能;MazeGrid.java 实现确定正确行走路径的功能。嘉兴学院 Java 综合实训报告53.1 类关系图类关系图3.2 类设计图类设计图类类 Maze模块名称Maze功能描述实现迷宫游戏接口与属性createMap()/*Function:生成迷宫InPut

5、: 无OutPut: 生成迷宫Return:空*/goMap()/*Function:走迷宫嘉兴学院 Java 综合实训报告6InPut: 无OutPut:无Return:空*/refreshMap()/*Function:刷新迷宫InPut: 选择重新生成迷宫OutPut:生成新迷宫Return:空*/main()/*Function:输出成功走出当前迷宫的耗时InPut: 无OutPut:输出耗时Return:空*/类类 MazeGrid模块名称MazeGrid功能描述确定迷宫所走路径接口与属性isMark()/*Function:判断是否通路InPut: 无OutPut: 无Return

6、:TRUE 或 FALSE*/setMark()/*Function:设置是否通路InPut: 无OutPut: 无Return:TRUE 或 FALSE*/Paint()/*Function:确定路径InPut: 无OutPut: 无Return:路径嘉兴学院 Java 综合实训报告7/*isVisited()/*Function:判断是否访问过InPut: 无OutPut: 无Return:0 或 1*/setMark()/*Function:设置是否访问过InPut: 无OutPut: 无Return:0 或 1*/isPersonCome()/*Function:判断是否访已经走过In

7、Put: 无OutPut: 无Return:0 或 1*/setPersonCome ()/*Function:设置走过InPut: 无OutPut: 无Return:1*/isStart()/*Function:判断是否为入口InPut: 无OutPut: 无Return:0 或 1*/setStart ()/*Function:设置为入口InPut: 无OutPut: 无Return:1*/isEnd()嘉兴学院 Java 综合实训报告8/*Function:判断是否为出口InPut: 无OutPut: 无Return:0 或 1*/setEnd ()/*Function:设置为出口InP

8、ut: 无OutPut: 无Return:1*/3.3 主要功能详细顺序图主要功能详细顺序图4. 主要程序实现主要程序实现import java.awt.BorderLayout; 嘉兴学院 Java 综合实训报告9import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.LinkedList; import java

9、.util.List; import java.util.TimerTask; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; public class Maze extends JFrame implements ActionListener private JPanel panel; private JPanel northPanel; private JPanel centerPanel; private Ma

10、zeGrid grid; private JButton restart; private JButton dostart; private int rows;private int cols; private List willVisit; private List visited; private LinkedList comed; private long startTime; private long endTime; public Maze() rows = 25; cols = 25; 嘉兴学院 Java 综合实训报告10willVisit = new ArrayList(); visited = new ArrayList(); comed = new LinkedList(); init(); this.setTitle(“回溯法-走迷宫“); this.add(panel); this.pack(); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); public void init() panel = new JPanel(); northPanel =

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号