- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java综合实训报告-迷宫
目 录
1. 需求分析 2
2. 概要设计 2
2.1 功能图 3
2.2 系统流程图 4
3. 详细设计 4
3.1 类关系图 5
3.2 类设计图 5
类Maze 5
类MazeGrid 6
3.3 主要功能详细顺序图 8
4. 主要程序实现 8
5. 测试与结果 16
6. 心得体会 19
参考文献 20
迷宫游戏的设计与实现
需求分析
基于Java实现的简易迷宫系统,通过判断所走路径是wall还是road,来实现从入口到出口的整个流程。运行该程序,可以选择默认状态下自动生成迷宫,亦可选择重新生成迷宫,通过自动寻找行走路径,最终显示当前迷宫运行时间。
概要设计
该程序设计是解决迷宫求解的问题,从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,显然需要用一个后进先出的结构来保存从入口到当前位置的路径。因此,在求迷宫通路的算法中要应用“栈”的思想假设“当前位置”指的是“在有哪些信誉好的足球投注网站过程中的某一时刻所在图中某个方块位置”,则求迷宫中一条路径的算法的基本思想是:若当前位置“可通”,则纳入“当前路径”,并继续朝“下一位置”探索,即切换“下一位置”为“当前位置”,如此重复直至到达出口;若当前位置“不可通”,则应顺着“来向”退回到“前一通道块”,然后朝着除“来向”之外的其他方向继续探索;若该通道块的四周4个方块均“不可通”,则应从“当前路径”上删除该通道块。所谓“下一位置”指的是当前位置四周4个方向(东、南、西、北)上相邻的方块。假设以栈S记录“当前路径”,则栈顶中存放的是“当前路径上最后一个通道块”。由此,“纳入路径”的操作即为“当前位置入栈””;“从当前路径上删除前一通道块”的操作即为“出栈”。
功能图
系统流程图
详细设计
在设计迷宫游戏时,编写了两个Java源文件Maze.java和MazeGrid.java。Maze.java中main类实现弹出游戏耗时窗口功能,createMap类用于实现生成迷宫功能,goMaze类用于实现走迷宫功能,refreshMap类实现刷新迷宫地图功能;MazeGrid.java实现确定正确行走路径的功能。
类关系图
类设计图
类Maze
模块名称 Maze 功能描述 实现迷宫游戏
接口与属性 createMap()
/*
Function:生成迷宫
InPut: 无
OutPut: 生成迷宫
Return:空
*/
goMap()
/*
Function:走迷宫
InPut: 无
OutPut:无
Return:空
*/
refreshMap()
/*
Function:刷新迷宫
InPut: 选择重新生成迷宫
OutPut:生成新迷宫
Return:空
*/
main()
/*
Function:输出成功走出当前迷宫的耗时
InPut: 无
OutPut:输出耗时
Return:空
*/ 类MazeGrid
模块名称 MazeGrid 功能描述 确定迷宫所走路径
接口与属性 isMark()
/*
Function:判断是否通路
InPut: 无
OutPut: 无
Return:TRUE或FALSE
*/
setMark()
/*
Function:设置是否通路
InPut: 无
OutPut: 无
Return:TRUE或FALSE
*/
Paint()
/*
Function:确定路径
InPut: 无
OutPut: 无
Return:路径
/*
isVisited()
/*
Function:判断是否访问过
InPut: 无
OutPut: 无
Return:0或1
*/
setMark()
/*
Function:设置是否访问过
InPut: 无
OutPut: 无
Return:0或1
*/
isPersonCome()
/*
Function:判断是否访已经走过
InPut: 无
OutPut: 无
Return:0或1
*/
setPersonCome ()
/*
Function:设置走过
InPut: 无
OutPut: 无
Return:1
*/
isStart()
/*
Function:判断是否为入口
InPut: 无
OutPut: 无
Return:0或1
*/
setStart ()
/*
Function:设置为入口
InPut: 无
OutPut: 无
Return:1
*/
isEnd()
/*
Function:判断是否为出口
InPut: 无
OutPut: 无
Return:0或1
*/
setEnd ()
/*
Function:设置为出口
InPut: 无
OutPut: 无
Return:1
*/
主要功能详细顺序图
您可能关注的文档
最近下载
- 道德发展心理学.pdf VIP
- 福克斯特Scarlett 4i4 3rd Gen用户说明书.pdf
- 部编人教版小学语文5年级下册全册教学课件.pptx
- 人教版二年级口算题1000题大全.pdf
- 2025年高一物理寒假衔接讲练 (人教版)第02讲 小船渡河和关联速度(教师版).docx VIP
- 2025年高一物理寒假衔接讲练 (人教版)第02讲 共点力的平衡(教师版).docx VIP
- 2025年高一物理寒假衔接讲练 (人教版)第03讲 抛体运动的规律(教师版).docx VIP
- 酒店的薪酬管理制度.docx VIP
- 《婴幼儿健康管理实务》课程标准 (1).docx
- 2024年中考数学试题(含答案).doc
文档评论(0)