
Java课程设计走迷宫--精选文档.doc
25页Java语言与面向对象技术课程设计报告(2014)Java语言与面向对象技术课程设计报告( 2014 -- 2015年度第 1 学期)走迷宫1目 录目 录 21 概 述 11.1 课程设计目的 11.2 课程设计内容 12 系统需求分析 22.1 系统目标 22.2 主体功能 22.3 开发环境 33 系统概要设计 33.1 系统的功能模块划分 33.2 系统流程图 44系统详细设计 64.1系统的主界面设计 64.2 MAZE的设计 74.3 PERSONINMAZE的设计 84.4 WALLORROAD的设计 84.5 MAZEPOINT的设计 94.6 SOUND的设计 104.7 RECORD的设计 105 测试 115.1 测试方案 115.2 测试结果 116 小结 16参考文献 17附录1 源程序清单 183走迷宫的设计1 概 述 1.1 课程设计目的1.加深对《Java语言与面向对象技术》课程基础知识的理解,掌握Java语言面向对象程序设计的开发方法和步骤;2.进一步理解面向对象程序设计的思想和方法,利用Java语言进行程序设计的能力;3.课程设计将课本上的理论知识和实际应用相结合,锻炼学生发现问题、分析问题和解决问题的能力。
加强学生研发、编写、调试程序的能力;4.培养学生在项目开发中团队合作精神、创新意识及能力;5.提高学生科技论文写作能力,规范完成课程设计报告1.2 课程设计内容 设计GUI界面的走迷宫游戏,游戏的目的是让走迷宫者从迷宫的入口处进从迷宫出口处出具体内容如下:(1)程序根据文本文件生成迷宫,这些文本文件称作迷宫文件迷宫文件的扩展名为.maze,其中的文本内容有着特殊的组织结构:任意两行文本所含有的字符个数必须相同,而且字符只可以是“*”、“#”、“0”或“1”迷宫文件中的“*”和“#”分别代表迷宫的入口和出口,“0”和“1”分别代表迷宫中的“路”和“墙” 例如,迷宫文件“中等迷宫.maze”所生成的迷宫如图1-1所示//中等迷宫.maze文件000000101000101001010010010100010100001010*0000101010001010010101000100010000010101000101000101011010010#101000010100000010001010101001001101010010101000100011101001010001010100101010100100图1-1 中等迷宫界面(2)用户可以通过界面上提供的菜单选项,选择“迷宫文件”来生成对应的迷宫类型。
3)用户可以通过界面上提供的菜单选项,选择迷宫中的“墙”和“路”的外观图像以及默认“墙”和“路”的图像同时用户也可以更改迷宫中“走迷宫者”的图像4)当用户开始玩游戏时想重新开始,用户可以随时单击界面上下方图片位置提供的按钮,重新开始走迷宫5)本程序还具有音乐播放的功能,当用户成功移动走迷宫者后,程序播放简短的一声音乐6)本迷宫程序增加“英雄榜”功能既排名功能,当用户成功将迷宫中的走迷宫者从入口移动到出口,如果成绩能排进前三名,就弹出一个对话框,将用户的成绩保存到“英雄榜”中,并且可以查看“英雄榜”以及删除“英雄榜”2 系统需求分析2.1 系统目标设计一个基于java的走迷宫小游戏,游戏的结果是让走迷宫者从迷宫的入口处走到迷宫的出口处根据已有的走迷宫小游戏进行新功能的增加2.2 主体功能(1)玩家可以任意选择不同的迷宫图进行走迷宫游戏2)玩家可以自定义玩家头像、墙的图像以及路的图像3)游戏进行时可以点击提示按钮重新开始游戏(4)根据玩家所玩的记录进行排行榜设置,分别列出保存各类型迷宫(简单迷宫、中等迷宫、复杂迷宫)的前三名,玩家完后可以点击英雄榜自行查看5)玩家可以清除英雄榜并且重新载入游戏。
2.3 开发环境Eclipse3 系统概要设计3.1 系统的功能模块划分1.系统的总体设计在设计走迷宫时,需要编写6个java源文件:MazeWindow.java、Maze.java、WallOrRoad.java、MazePoint.java、PersonInMaze.java、HandleMove.java、Record.java、ShowRecord.java和Sound.java走迷宫除了上述6个java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JmenuItem和File等类走迷宫所用到的一些重要的类以及之间的组合关系如下图所示:MazelWindowMazePersonInMazeHandleMoveRecordShowRecordSoundFileJMenuItemWallOrRoadMazePoint 图3-1 各类之间的关系2.系统模块划分 本系统主要有以下几个功能模块:创建走迷宫的主窗口、创建迷宫、创建墙和路及确定位置的对象,创建走迷宫者,创建处理键盘事件对象,创建英雄榜及显示英雄榜 该软件主要组成模块和各个模块之间的调用关系如下图所示:创建迷宫创建主窗口编写迷宫文件创建墙创建路确定墙和路的位置创建走迷宫者创建处理键盘事件对象创建及显示英雄榜图3-2功能模块图3.2 系统流程图玩家开始打开界面进行游戏,通过菜单选项选择简单、中等、复杂迷宫中的一种进行游戏。
开始的界面各个图像是程序默认的图像,玩家也可以根据自己的喜好自行选择文件夹里的图像来设置墙的图像、路的图像以及走迷宫者的图像然后玩家根据提示点击走迷宫者开始游戏,玩家通过对键盘的操作来控制走迷宫者,使其从入口进入从出口出来在玩的期间如果玩家在十秒内没能从出口出来则玩家的图像会变成猪的图像游戏结束后如果玩家破纪录则根据提示进入英雄榜,同时可以查看英雄榜玩家还可以清除英雄榜重新打开界面进行游戏具体活动流程图如下所示:图3-3 活动流程图4系统详细设计4.1系统的主界面设计1.成员变量maze是Maze类声明的对象,用来刻画迷宫,是MazeWindow类中最重要的成员之一MazeWindow类根据迷宫文件,即根据该类中的mazeFile来创建maze对象bar是JMenuBar创建的菜单条,用来添加菜单bar被放置在窗口的顶部menuChoice是JMenu创建的菜单,其名字为“选择迷宫文件”menuChoice和menuImage被添加到菜单条bar中wallImage、roadImage、和defaultImage是JMenuItem创建的菜单项,名字依次为“墙的图像”、“路的图像”和“墙和路的默认图像”,这三个菜单项被添加到菜单menuImage中。
wallImage、roadImage和defaultImage都将当前窗口注册为自己的ActionEvent事件监控器mazeFile、wallImageFile和roadImageFile是File的对象,其中mazeFile用来存放迷宫文件的引用,而wallImageFile和roadImageFile分别用来存放迷宫中“墙”和“路”的外观图像文件的引用renew是JButton创建的按钮对象,名字为“重新开始”Renew将当前窗口注册为自己的ActionEvent事件监控器2.方法MazeWindow()是构造方法,负责完成窗口的初始化操作,其重要的操作之一是:读取当前目录中扩展名为.maze的迷宫文件,并根据迷宫文件的名字创建JMenuItem菜单项添加到menuChoice菜单中,然后将当前窗口注册为每个菜单上的ActionEvent事件监控器另外,该构造方法在执行过程中,将mazeFile初始化为menuChoice菜单中的第一个菜单项所代表的迷宫文件,并根据该迷宫文件创建MazeWindow窗口中的maze对象该构造方法还对wallImageFile和roadImageFile进行了初始化,并指定迷宫中“墙”和“路”所使用的默认图像。
init()方法根据迷宫文件初始化maze对象,完成必要的初始化操作actionPerformed(ActionEvent)方法是MazeWindow类实现的ActionListener接口中的方法MazeWindow类创建的窗口时menuChoice菜单和menuImage菜单中的菜单项以及renew按钮上的ActionEvent事件监控器当用户选中某个菜单项或单击按钮时,窗口将执行actionPerformed(ActionEvent)方法进行想应得操作如果用户选中menuChoice菜单中的某个菜单项,即用户选择了一个迷宫文件,actionPerformed(ActionEvent)方法所执行的操作就是改变mazeFile所引用的迷宫文件,然后调用init()方法如果用户选中menuImage菜单中的wallImage或roadImageFile菜单项时,actionPerformed(ActionEvent)方法所执行的操作就是分别改变wallImage和roadImage所引用的图像文件,从而让maze对象改变“墙”或路的图像,如果用户选中menuImage菜单中的defaultImage菜单项,actionPerformed(ActionEvent)方法所执行的操作就是将wallImage和roadImageFile所引用的图像文件恢复到默认设置,并让maze对象恢复“墙”或“路”的默认图像。
当用户单击rennew按钮时,actionPerformed(ActionEvent)方法所进行的操作时保持当前的mazeFile所引用的迷宫文件,并执行init方法main(String[])方法是程序运行的入口方法3. 主界面效果图如下图所示图4-1 主界面图4.2 Maze的设计1.成员变量mazeFile是File类声明的对象,用来存放迷宫文件的引用mazePoint是MazePoint类型的二位数组,其单元为MazePoint类创建的对象,用来确定“墙”和“路”以及“走迷宫者”的位置,即确定WallOrRoad以及PersonInMaze对象在maze对象中的位置wallOrRoad是WallOrRoad类型的二维数组,七单元为WallOrRoad类索川江的对象,用来表示迷宫中的“墙”或“路”person是PersonInMaze类创建的对象,用来表示迷宫中的“走迷宫者”handleMove是HandleMove类创建的对象,负责处理person对象上的键盘事件wallImage和roadImage是File类声明的对象,用来存放绘制“墙”和“路”的外观的图文件的引用distance、m和n是int型数据。
mazePoint对象根据distance的值来进行初始化,以便确定mazePoint对象之间的距离,m和n的值是二维数组mazePoint的行数和列数2. 方法 maze()是构造方法,负责创建maze对象maze对象调用setmazeFile(File)方法可根据参数指定的迷宫文件完成必要的初始化,例如,创建mazePoint和wal。












