收藏 分享(赏)

Java课程设计走迷宫.doc

上传人:HR专家 文档编号:5901889 上传时间:2019-03-20 格式:DOC 页数:32 大小:1.91MB
下载 相关 举报
Java课程设计走迷宫.doc_第1页
第1页 / 共32页
Java课程设计走迷宫.doc_第2页
第2页 / 共32页
Java课程设计走迷宫.doc_第3页
第3页 / 共32页
Java课程设计走迷宫.doc_第4页
第4页 / 共32页
Java课程设计走迷宫.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、Java 语 言 与 面 向 对 象 技 术课 程 设 计 报 告( 2014 - 2015 年度第 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 的设

2、计 .104.7 RECORD 的设计 .105 测试 115.1 测试方案 .115.2 测试结果 .116 小结 16参考文献 17附录 1 源程序清单 .18走迷宫0走迷宫的设计1 概 述 1.1 课程设计目的1加深对Java 语言与面向对象技术课程基础知识的理解,掌握 Java 语言面向对象程序设计的开发方法和步骤;2进一步理解面向对象程序设计的思想和方法,利用 Java 语言进行程序设计的能力;3课程设计将课本上的理论知识和实际应用相结合,锻炼学生发现问题、分析问题和解决问题的能力。加强学生研发、编写、调试程序的能力;4培养学生在项目开发中团队合作精神、创新意识及能力;5提高学生科技

3、论文写作能力,规范完成课程设计报告。1.2 课程设计内容 设计 GUI 界面的走迷宫游戏,游戏的目的是让走迷宫者从迷宫的入口处进从迷宫出口处出。具体内容如下:(1)程序根据文本文件生成迷宫,这些文本文件称作迷宫文件。迷宫文件的扩展名为.maze,其中的文本内容有着特殊的组织结构:任意两行文本所含有的字符个数必须相同,而且字符只可以是“*” 、 “#”、 “0”或“1” 。迷宫文件中的“*”和“#”分别代表迷宫的入口和出口, “0”和“1”分别代表迷宫中的“路”和“墙” 。 例如,迷宫文件“中等迷宫.maze”所生成的迷宫如图 1-1 所示。/中等迷宫.maze 文件00000010100010

4、1001010010010100010100001010*0000101010001010010101000100010000010101000101000101011010010#101000010100000010001010101001001101010010101000100011101001010001010100101010100100Java 语言与面向对象技术课程设计报告( 2014)1图 1-1 中等迷宫界面(2)用户可以通过界面上提供的菜单选项,选择“迷宫文件”来生成对应的迷宫类型。(3)用户可以通过界面上提供的菜单选项,选择迷宫中的“墙”和“路”的外观图像以及默认“墙”和

5、“路”的图像。同时用户也可以更改迷宫中“走迷宫者”的图像。(4)当用户开始玩游戏时想重新开始,用户可以随时单击界面上下方图片位置提供的按钮,重新开始走迷宫。(5)本程序还具有音乐播放的功能,当用户成功移动走迷宫者后,程序播放简短的一声音乐。(6)本迷宫程序增加“英雄榜”功能既排名功能,当用户成功将迷宫中的走迷宫者从入口移动到出口,如果成绩能排进前三名,就弹出一个对话框,将用户的成绩保存到“英雄榜”中,并且可以查看“英雄榜”以及删除“英雄榜” 。2 系统需求分析2.1 系统目标设计一个基于 java 的走迷宫小游戏,游戏的结果是让走迷宫者从迷宫的入口处走到迷宫的出口处。根据已有的走迷宫小游戏进行

6、新功能的增加。2.2 主体功能(1)玩家可以任意选择不同的迷宫图进行走迷宫游戏。(2)玩家可以自定义玩家头像、墙的图像以及路的图像。(3)游戏进行时可以点击提示按钮重新开始游戏(4)根据玩家所玩的记录进行排行榜设置,分别列出保存各类型迷宫(简单迷宫、中等迷宫、复杂迷宫)的前三名,玩家完后可以点击英雄榜自行查看。(5)玩家可以清除英雄榜并且重新载入游戏。走迷宫22.3 开发环境Eclipse3 系统概要设计3.1 系统的功能模块划分1.系统的总体设计在设计走迷宫时,需要编写 6 个 java 源文件:MazeWindow.java、Maze.java、WallOrRoad.java、MazePo

7、int.java、PersonInMaze.java、HandleMove.java、Record.java、ShowRecord.java 和 Sound.java。走迷宫除了上述 6 个 java 源文件所给出的类外,还需要 Java 系统提供的一些重要的类,如 JmenuItem 和 File 等类。走迷宫所用到的一些重要的类以及之间的组合关系如下图所示:图 3-1 各类之间的关系2.系统模块划分本系统主要有以下几个功能模块:创建走迷宫的主窗口、创建迷宫、创建墙和路及确定位置的对象,创建走迷宫者,创建处理键盘事件对象,创建英雄榜及显示英雄榜。 该软件主要组成模块和各个模块之间的调用关系如

8、下图所示:MazelWindowMaze PersonInMazeHandleMoveRecord ShowRecordSound File JMenuItemWallOrRoadMazePointJava 语言与面向对象技术课程设计报告( 2014)3创建迷宫创建主窗口编写迷宫文件创建墙创建路确定墙和路的位置创建走迷宫者创建处理键盘事件对象创建及显示英雄榜图 3-2 功能模块图3.2 系统流程图玩家开始打开界面进行游戏,通过菜单选项选择简单、中等、复杂迷宫中的一种进行游戏。开始的界面各个图像是程序默认的图像,玩家也可以根据自己的喜好自行选择文件夹里的图像来设置墙的图像、路的图像以及走迷宫者的

9、图像。然后玩家根据提示点击走迷宫者开始游戏,玩家通过对键盘的操作来控制走迷宫者,使其从入口进入从出口出来。在玩的期间如果玩家在十秒内没能从出口出来则玩家的图像会变成猪的图像。游戏结束后如果玩家破纪录则根据提示进入英雄榜,同时可以查看英雄榜。玩家还可以清除英雄榜重新打开界面进行游戏。具体活动流程图如下所示:走迷宫4像像像像中中中中中中像像像中中中像像像像像中中中中像像像中中中像像像像图 3-3 活动流程图Java 语言与面向对象技术课程设计报告( 2014)54 系统详细设计4.1 系统的主界面设计1成员变量maze 是 Maze 类声明的对象,用来刻画迷宫,是 MazeWindow 类中最重要

10、的成员之一。MazeWindow 类根据迷宫文件,即根据该类中的 mazeFile 来创建 maze 对象。bar 是 JMenuBar 创建的菜单条,用来添加菜单。bar 被放置在窗口的顶部。menuChoice 是 JMenu 创建的菜单,其名字为“选择迷宫文件” 。menuChoice和 menuImage 被添加到菜单条 bar 中。wallImage、roadImage、和 defaultImage 是 JMenuItem 创建的菜单项,名字依次为“墙的图像” 、 “路的图像”和“墙和路的默认图像” ,这三个菜单项被添加到菜单 menuImage 中。wallImage、roadIm

11、age 和 defaultImage 都将当前窗口注册为自己的 ActionEvent 事件监控器。mazeFile、wallImageFile 和 roadImageFile 是 File 的对象,其中 mazeFile用来存放迷宫文件的引用,而 wallImageFile 和 roadImageFile 分别用来存放迷宫中“墙”和“路”的外观图像文件的引用。renew 是 JButton 创建的按钮对象,名字为“重新开始” 。Renew 将当前窗口注册为自己的 ActionEvent 事件监控器。2方法MazeWindow()是构造方法,负责完成窗口的初始化操作,其重要的操作之一是:读取当

12、前目录中扩展名为.maze 的迷宫文件,并根据迷宫文件的名字创建JMenuItem 菜单项添加到 menuChoice 菜单中,然后将当前窗口注册为每个菜单上的 ActionEvent 事件监控器。另外,该构造方法在执行过程中,将 mazeFile 初始化为 menuChoice 菜单中的第一个菜单项所代表的迷宫文件,并根据该迷宫文件创建 MazeWindow 窗口中的 maze 对象。该构造方法还对 wallImageFile 和roadImageFile 进行了初始化,并指定迷宫中“墙”和“路”所使用的默认图像。init()方法根据迷宫文件初始化 maze 对象,完成必要的初始化操作。ac

13、tionPerformed(ActionEvent)方法是 MazeWindow 类实现的ActionListener 接口中的方法。MazeWindow 类创建的窗口时 menuChoice 菜单和menuImage 菜单中的菜单项以及 renew 按钮上的 ActionEvent 事件监控器。当用户选中某个菜单项或单击按钮时,窗口将执行 actionPerformed(ActionEvent)方法进行想应得操作。如果用户选中 menuChoice 菜单中的某个菜单项,即用户选择了一个迷宫文件,actionPerformed(ActionEvent)方法所执行的操作就是改变mazeFile

14、所引用的迷宫文件,然后调用 init()方法。如果用户选中 menuImage菜单中的 wallImage 或 roadImageFile 菜单项时,actionPerformed(ActionEvent)方法所执行的操作就是分别改变 wallImage 和roadImage 所引用的图像文件,从而让 maze 对象改变“墙”或路的图像,如果用走迷宫6户选中 menuImage 菜单中的 defaultImage 菜单项,actionPerformed(ActionEvent)方法所执行的操作就是将 wallImage 和roadImageFile 所引用的图像文件恢复到默认设置,并让 maz

15、e 对象恢复“墙”或“路”的默认图像。当用户单击 rennew 按钮时,actionPerformed(ActionEvent)方法所进行的操作时保持当前的 mazeFile 所引用的迷宫文件,并执行 init 方法。main(String)方法是程序运行的入口方法。3. 主界面效果图如下图所示图 4-1 主界面图4.2Maze 的设计1成员变量mazeFile 是 File 类声明的对象,用来存放迷宫文件的引用。mazePoint 是 MazePoint 类型的二位数组,其单元为 MazePoint 类创建的对象,用来确定“墙”和“路”以及“走迷宫者”的位置,即确定 WallOrRoad 以

16、及PersonInMaze 对象在 maze 对象中的位置。wallOrRoad 是 WallOrRoad 类型的二维数组,七单元为 WallOrRoad 类索川江的对象,用来表示迷宫中的“墙”或“路” 。person 是 PersonInMaze 类创建的对象,用来表示迷宫中的“走迷宫者” 。handleMove 是 HandleMove 类创建的对象,负责处理 person 对象上的键盘事件。wallImage 和 roadImage 是 File 类声明的对象,用来存放绘制“墙”和“路”的外观的图文件的引用。distance、m 和 n 是 int 型数据。mazePoint 对象根据

17、distance 的值来进行初始化,以便确定 mazePoint 对象之间的距离,m 和 n 的值是二维数组 mazePointJava 语言与面向对象技术课程设计报告( 2014)7的行数和列数。2. 方法maze()是构造方法,负责创建 maze 对象。maze 对象调用 setmazeFile(File)方法可根据参数指定的迷宫文件完成必要的初始化,例如,创建 mazePoint 和 wallOrRoad 数组等。maze 对象调用 setWallImage(File)方法可以设置 wallImage 文件对象。maze 对象调用 setRoadImage(File)方法可以设置 roa

18、dImage 文件对象。maze 对象调用 getHandleMove()返回到 handleMove 对象。3. 根据编写的简单迷宫文件所显示的迷宫图像如下图所示图 4-2 简单迷宫图像-4.3PersonInMaze 的设计1效果图PersonInMaze 创建的对象效果如图所示图 4-3 走迷宫者图像2类的主要成员变量和方法成员变量:point 是 MazePoint 型对象,用来确定 PersonInMaze 对象在 Maze 所创建的迷宫容器的位置。tool 是 Toolkit 对象,用来获得 Inage 对象。方法:MazePoint()是构造方法,负责完成 MazePoint 对

19、象的初始化。PersonInMaze 对象调用 setAtMazePoint(MazePoint)方法设置自己所在的“点” ,即设置属性 point 的对象引用。PersonInMaze 对象电影 getAtMazePoint()返回自己所在的“点” ,即返回point 对象的引用。走迷宫8PersonInMaze 对象调用 painTComponent(Graphics)方法绘制图形,即绘制tool 对象所获得的 Image 对象。4.4WallOrRoad 的设计1成员变量isRoad、isWall、isEnter 和 isOut 是 boolean 型数据,取值为 true 或false

20、,分别用了表示 WallOrRoad 对象是否为“路” 、 “墙” 、 “入口”和“出口” 。point 是 MazePoint 型对象,用来确定 WallOrRoad 对象在 Maze 所创建的迷宫容器中的位置。wallImage 和 roadImage 是 File 类型的对象,用来确定 WallOrRoad 对象上所绘制的图像文件。tool 是 Toolkit 型对象,负责创建 Image 对象。2方法WallOrRoad()是构造方法,负责完成 WallOrRoad 对象的初始化。WallOrRoad 对象调用 setIsEnter(boolean)方法设置自己是否为迷宫的“入口” 。

21、WallOrRoad 对象调用 getIsEnter()方法判断自己是否为迷宫的“入口” ,即返回 isEnter 属性的值。WallOrRoad 对象调用 setIsOut(boolean)方法设置自己是否为迷宫的“出口” 。WallOrRoad 对象调用 getIsOut()方法判断自己是否为迷宫的“出口” ,即返回 isOut 属性的值。WallOrRoad 对象调用 setIsRoad(boolean)方法设置自己是否为迷宫的“路”。WallOrRoad 对象调用 getIsRoad()方法判断自己是否为迷宫的“路” ,即返回 isRoad 属性的值。WallOrRoad 对象调用 s

22、etIsWall(boolean)方法设置自己是否为迷宫的“墙”。WallOrRoad 对象调用 getIsWall()方法判断自己是否为迷宫的“墙” ,即返回 isWall 属性的值。WallOrRoad 对象调用 setAtMazePoint(MazePonit)方法设置自己所在的“点” ,及设置 point 对象的引用。WallOrRoad 对象调用 getAtMazePoint()方法返回到自己所在的“点” ,即返回 point 对象的引用。WallOrRoad 对象调用 setWallImage(File)方法设置 wallImage 文件对象。WallOrRoad 对象调用 set

23、RoadImage(File)方法可以设置 roadImage 文件对象。WallOrRoad 对象调用 paintComponent(Graphics)方法绘制图像,即绘制tool 对象根据 roadImage 或 wallImage 文件所见获得的 Image 对象。Java 语言与面向对象技术课程设计报告( 2014)94.5MazePoint 的设计1效果图MazePoint 创建的对象负责确定 WallOrRoad 对象和 PersonInMaze 对象在Maze 容器中的所在位置。MazePoint 创建的对象没有可现实的效果图。2类的主要成员变量和方法1)成员变量x 和 y 是

24、MazePoint 对象中的两个 int 型数据,分别用来表示容器坐标系中的x 轴坐标和 y 轴坐标值。havaWallOrRoad 是 boolean 型数据,如果有 WallOrRoad 对象在该 MazePoint对象上时,haveWallOrRoad 的值是 true;否则为 false。wallOrRoad 是 WallOrRoad 类声明的对象,用来存放一个 WallOrRoad 对象的引用,表明该 WallOrRoad 对象在当前 MazePoint 对象上。2)方法MazePoint(int,int)是构造方法,用来创建 MazePoint 对象。MazePoint 对象上是否

25、有 WallOrRoad 对象,isHaveWallOrRoad()方法返回true;否则返回 false。MazePoint 对象调用 setIsWallOrRoad(boolean)方法可以根据参数的值设置当前 MazePoint 对象上是否有 WallOrRoad 对象。MazePoint 对象调用 getX()和 getY()方法可以返回其中的 x 轴坐标和 y轴坐标。MazePoint 对象调用 equls(TowerPoint)方法可以判断当前 MazePoint 对象是否和参数指定的 MazePoint 对象相同。Point 对象调用 setWallOrRoad(WallOrRo

26、ad)方法,将参数指定的WallOrRoad 对象放置在当前 MazePoint 对象上。Point 对象调用 getWallOrRoad()方法可以返回当前 MazePoint 对象上的WallOrRoad 对象。4.6Sound 的设计1. 成员变量AudioClip 声明对象 aau;String 类声明 soundname 确定铃声的名字;设定 boolean 型的对象 b 初始值为 false2方法makeSound(String soundname)制作铃声,setSound(String soundname)设置铃声,stop()使铃声停止,boolean isPlaying()

27、判断铃声是否播放4.7Record 的设计1.成员变量Time 为时间,设定其初始值为 0.Maze 为 String 类声明的对象,用来确定人物所处的迷宫,message 用来输出走迷宫10信息。textName 为 JTextField 声明的对象,用来设置文本名称,label 为 Label 声明的对象,其值为空,Jbutton 声明两个对象,分别为确定,取消。2.方法Record()方法用来记录成绩,setMaze(String maze)用来设置迷宫类型,actionPerformed(ActionEvent e)用来记录走迷宫者的表现,isBrokenRecord(String k

28、ey,int time)/在 HandleMove 中调用,key 是迷宫名,此方法用来判断是否破纪录了,writeRecord(String key,String message),key 是迷宫文件名,message 是记录地图名、时间、用户名的字符串,写下记录。3. 记录英雄榜效果图如下所示图 4-4 记录成绩效果图5 测试5.1 测试方案首先打开游戏查看游戏的主界面是否符合要求,然后根据提示开始进行游戏。根据菜单栏选项任意选择一种迷宫游戏看是否根据自己的选择而改变。点击菜单栏墙和路的图像选择默认的图像检查是否跟代码编写时设置相同,然后根据自己喜好选择不同的图片作为墙和路的背景。开始游戏

29、根据提示点击走迷宫者图像开有游戏,检查键盘方向键是否控制走迷宫者走的方向,根据键盘的上下左右的控制是否会分别四种不同的声音发出。检测是否遇到墙就不能走,当走迷宫者在迷宫内十秒内还没有走出看走迷宫者的图像是否变成猪的图像。当玩家走出迷宫破纪录是否记录个人信息,检查英雄榜Java 语言与面向对象技术课程设计报告( 2014)11是否真有前三名的成绩。清空英雄榜重新开始游戏查看英雄榜是否真的被清空。5.2 测试结果1选择迷宫种类的测试在原文件内编写不同三种迷宫文件,在主界面中根据选择会出现不同的迷宫如下图所示:图 5-1 中等迷宫图像图 5-2 复杂迷宫图像走迷宫12图 5-3 简单迷宫图像2迷宫图

30、片的设置测试以上的图像都是默认的图像,玩家可以更改墙、路以及走迷宫者的图像。在玩家玩超过十秒还没出来的时候走迷宫者会变成猪的头像,点击窗口下方可重新开始游戏。图 5-4 选择图片是打开的文件Java 语言与面向对象技术课程设计报告( 2014)13图 5-5 修改路、墙走迷宫者后的迷宫图像3开始游戏的测试玩家根据提示点击走迷宫者进行游戏同时开始计时,用键盘上、下、左、右键控制走迷宫者开始走迷宫,只有从入口进从出口处出来游戏才结束。如果在迷宫内时间超过十秒钟则走迷宫者的图像变成猪的图像。图 5-6 开始游戏的界面走迷宫14图 5-7 游戏超过十秒走迷宫者的图像变化图 5-8 上图有小人图像按钮为

31、重新开始按钮4破纪录记录成绩的测试玩家通过迷宫后程序会根据玩家的成绩做出不同响应,并把玩该种迷宫成绩的前三名列入英雄榜。图 5-9 游戏完成超过十秒界面Java 语言与面向对象技术课程设计报告( 2014)15图 5-10 闯关成功界面图 5-11 记录成绩界面图 5-12 查看英雄榜界面走迷宫166 小结走迷宫的游戏功能已经基本实现,在此次课程设计过程中,我遇到了一些问题在程序中各类的反复关联和依赖关系让类与类之间的关系复杂,不是能很好的把握,这样对游戏的实现造成了一定的麻烦,通过向同学请教渐渐地摸索了一些,而当把各个类都编写完之后,程序运行不起来,当时觉得很困惑,明明自己编写的类已经没什么

32、差错,可就是运行不起来有点小郁闷,再经同学指点发现原来是一些必要的文件的存放路径不对,当一切都整合完毕之后,程序运行起来了,这让我十分开心。同时我也意识到团队合作的重要性,个人的力量在某些方面是有限的,而一个团队的智慧是无穷大的。通过这次“走迷宫的课程设计更让我意识到了理论与事件结合的在重要性,只有理论知识是完全不够的,我们还要学会将它运用到实践中,用它来实现我们所要做的项目。亲身的实践让我们对理论知识的一些难点和不懂的地方有了更好地理解与认识。希望以后能有更多的机会动手来进行操作。Java 语言与面向对象技术课程设计报告( 2014)17参考文献1耿祥义,张跃平. Java2 实用教程(第三

33、版)M . 北京:清华大学出版社, 2006 2耿祥义. Java 课程设计(第三版)M . 北京:清华大学出版社, 20043张跃平.Java2 实用教程实验指导与习题解答(第三版)M. 北京:清华大学出版社, 2004走迷宫18附 录附录 1 源程序清单MazeWindowimport javax.swing.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.util.Hashtable;import javax.swing.filechooser.*;public class MazeWind

34、ow extends JFrame implements ActionListener Maze maze;JMenuBar bar;/声明菜单条对象JMenu menuChoice,menuImage,hero;/声明菜单对象JmenuItem wallImage,roadImage,defaultImage,playerImage1,heroItem,heroclear; File mazeFile,wallImageFile,roadImageFile;JButton renew;/声明按钮对象String player=“人.jpg“;ShowRecord showRecord; /S

35、howRecord类 创建一个类对象File 英雄榜 =new File(“英雄榜.txt“);File file=null; static String mazeName;static String currentMap; Hashtable hashtable=null; /哈希表 (英雄榜)MazeWindow()wallImageFile=new File(“墙.jpg“ );roadImageFile=new File(“路.jpg“ );bar=new JMenuBar();/创建菜单条对象menuChoice=new JMenu(“选择迷宫“);File dir=new File

36、(“.“); file=dir.listFiles(new FilenameFilter()public boolean accept(File dir,String name) return name.endsWith(“maze“); ); mazeName=new Stringfile.length;for(int i=0;i10) person.setImage(“猪.jpg“); if(e.getKeyCode()=KeyEvent.VK_UP) int k=Math.max(m-1,0);if(pkn.getWallOrRoad().getIsRoad()/逻辑真时,走迷宫者不能穿

37、进墙 if(sound.isPlaying()=true) sound.stop(); sound.makeSound(“walk.wav“);person.setAtMazePoint(pkn);person.setLocation(pkn.getX(),pkn.getY(); else if(e.getKeyCode()=KeyEvent.VK_DOWN) int k=Math.min(m+1,p.length-1);if(pkn.getWallOrRoad().getIsRoad() if(sound.isPlaying()=true) sound.stop(); sound.makeS

38、ound(“walk2.wav“);person.setAtMazePoint(pkn); person.setLocation(pkn.getX(),pkn.getY(); else if(e.getKeyCode()=KeyEvent.VK_LEFT) int k=Math.max(n-1,0);if(pmk.getWallOrRoad().getIsRoad() if(sound.isPlaying()=true) sound.stop(); sound.makeSound(“walk3.wav“);person.setAtMazePoint(pmk); person.setLocati

39、on(pmk.getX(),pmk.getY(); else if(e.getKeyCode()=KeyEvent.VK_RIGHT) int k=Math.min(n+1,p0.length-1);if(pmk.getWallOrRoad().getIsRoad()走迷宫22if(sound.isPlaying()=true) sound.stop(); sound.makeSound(“walk4.wav“); person.setAtMazePoint(pmk);person.setLocation(pmk.getX(),pmk.getY(); public void actionPer

40、formed(ActionEvent e)spendTime+;showTime.setText(“您的用时:“ +spendTime+“秒“); public void keyReleased(KeyEvent e)/显示用户的当前用时 PersonInMaze person=(PersonInMaze)e.getSource();MazePoint endPoint=person.getAtMazePoint();if(endPoint.getWallOrRoad().getIsOut() recordTime.stop();if(spendTime10)JOptionPane.showM

41、essageDialog(this,“恭喜您闯关成功,亲!但用时超过10秒钟,速度慢了些哦!用时:“+ spendTime+“秒“ ,“消息框“,JOptionPane.INFORMATION_MESSAGE); else JOptionPane.showMessageDialog(this,“恭喜您闯关成功,亲!用时:“+spendTime+“秒“,“消息框 “,JOptionPane.INFORMATION_MESSAGE); Record record=new Record();if(record.isBrokenRecord(maze,spendTime)=true)/判断是否破纪录

42、record.setMaze(maze); record.setTime(spendTime); record.setVisible(true); public void keyTyped(KeyEvent e) /键盘 PersonInMazeimport javax.swing.*;import java.awt.*;import javax.swing.filechooser.*;import java.io.*;public class PersonInMaze extends JTextField MazePoint point;Toolkit tool;String person=

43、“狗.jpg“; PersonInMaze()tool=getToolkit(); /获得工具包setEditable(false);/不可见setBorder(null);/无边框setOpaque(false);/非透明的setToolTipText(“单击我,然后按键盘方向键 “);/提示信息 public void setAtMazePoint(MazePoint p) point=p; public MazePoint getAtMazePoint()return point; public void paintComponent(Graphics g)/设置走迷宫者的图片 supe

44、r.paintComponent(g);int w=getBounds().width; int h=getBounds().height;Image image=tool.getImage(person);/获得image 图像g.drawImage(image,0,0,w,h,this);/绘制image图像 public void setImage(String person)this.person=person;RecordJava 语言与面向对象技术课程设计报告( 2014)23import java.io.*;import java.util.*;import javax.swin

45、g.*;import java.awt.event.*;import java.awt.*;public class Record extends JDialog implements ActionListenerint time=0; String maze;String message=“; JTextField textName; JLabel label=null; JButton 确定,取消; public Record()setTitle(“记录你的成绩 “); setBounds(200,200,320,300);setResizable(false); setModal(tru

46、e); 确定=new JButton(“确定“ );取消=new JButton(“取消“ ); textName=new JTextField(8);textName.setText(“匿名“ );确定.addActionListener(this);取消.addActionListener(this); setLayout(new GridLayout(2,1);label=new JLabel(“您现在是. 高手,输入您的大名上榜啊“); add(label);JPanel p=new JPanel(); p.add(textName);p.add(确定);p.add(取消); add(

47、p);setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); public void setMaze(String maze) this.maze=maze;label.setText(“ 恭喜!你破纪录了!请输入您的名字“ ); public void setTime(int time) this.time=time; public void actionPerformed(ActionEvent e)if(e.getSource()=确定) message=maze+“#“+time+“#“+“ “+textName.getText(); write

48、Record(maze,message); setVisible(false);if(e.getSource()=取消) setVisible(false); public boolean isBrokenRecord(String key,int time)/在HandleMove中调用,key是迷宫名 boolean b=false;File f=new File(“英雄榜.txt“); try int n=0;Hashtable hashtable = null;/构造一个哈希表 FileInputStream in=new FileInputStream(f);ObjectInputStr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报