




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java课程设计:目:扫雷游戏系 别 信息与计算科学专业班级 信息与计算科学091班学生姓名余启张昱宋加望指导教师 贺 慧 琳提交日期2012年5月25日一、设计目的(一级标题,用黑体小三)3二、设计要求和设计指标3三、设计内容3总体设计3 MineGame 类 4MineArea5 Block 类 7 BlockView 类 7 LayMines 类 9 Record 类 9 ShowRecord 类 10 userDefine 类 11 voiceShow 类 13 rul eShow 类 14 authorShow 类 16所需图像17所需音频17整体效果17四、本设计改进和建议20五、
2、总结(感想和心得等)20六、主要参考文献20附录20一、设计目的通过选择Java课程设计(第二版)中扫雷游戏,这个综合性的题目作为本次的课 程设计。可以让我们更加熟悉Java程序设计这门课程,学会熟练使用Jcreator这个软件, 加深对Java语言的掌握,提高编程水平。同时培养独立思考和同学间团结合作的能力,为 毕业设计以及将来的工作打下坚实的基础。二、设计要求和设计指标参考Windows 2000/XP系统提供的扫雷游戏,改进扫雷游戏程序,增加以下功能:在 主界面中添加一个菜单栏,菜单栏中包括游戏和帮助两个菜单,其中游戏菜单中设置初级、 中级、高级、自定义、声音、扫雷英雄榜这几个菜单项,帮
3、助菜单中设置游戏规则和制作 人员两个菜单项。三、设计内容总体设计在设计扫雷游戏时,需要编写个Java源文件:、ruleShow扫雷游戏除了需要编写上述java源文件所给出的类外,还需要Java系统提供的一些重要 的类,如File、JButton,和Jlabel等类。扫雷游戏所用到的一些重要的类以及之间的组 合关系如图1所示:图1类之间的组合关系MineGame 类3. 2. 1.效果图(如下图2)图2 MineGame创建的窗口3.2.2 UML 类图MineGame类是 包中Jframe的一个子类,并实现了 ActionListener接中,标明该类的主要成员变量和方法的UML图如图3所示图
4、3 MineGame类的UML图以下是LXL图中有关数据和方法的详细说明。1)成员变量 bar和fileMenu提供菜单操作,单击游戏菜单中的选项为“初级”“中级” “高级”“自 定义” “扫雷英雄榜”“背景声音”“退出”“游戏规则”“制作人”等 MineArea是扫雷区域,提供有关扫雷的主要功能。“英雄榜”负责存放三个级别的扫雷最好成绩。 showheroRecord负责显示英雄榜中的数据, userdefine负责用户自定义功能, Vo iceShow负责背景音乐功能, ruleshow负责显示游戏规则功能 authorshow负责显示作者功能2)MineGameO是橘色造方法,负责完成窗
5、口的主要功能 actionPerformed (ActionEvent)方法是 MineGame 类实现的 ActionListere r 接 口中的 方法,该方法负责执行菜单发出的有关命令。用户选择菜单项可以触发ActionEvent事件, 导致actionPerformed (ActionEvent)方法执行相应的操作,例如将mineAreaw创建的雷 区设置为初级中级高级等, Main (String 口)方法是程序的入口方法3. 2.3代码(见附录1)MineArea(见下图4)图4 MineArea创建的扫雷区域效果图3. 3. 2 UML 图MineArea 类是包中 JPanel
6、 容器的子类,实现了 ActionListener 和 MouserListener4. 3. 1效果图:接口,所创建的对象:mine.Area是MineGame类中最重要的成员之一,作为一个容器添加 到MineGame窗口的中心。标明MineArea类的主要成员变量、方法以及和MineGame类之间 组合关系的UML图如图5:JPanelActionListenerMouseListeneriiMineAreaRow.columjnineCount.markMount: int 1 Isy: LayMines block: BlockJ' record: RecordblockVie
7、w: BlockView restart: JButtonshowTime:JTextField time: TimershowMarkedXIineCount: JTextField' _ 11init-fineArea(int; intent): void|show(int m;mtn):voidaaionPerfornied(actionEvent):void|inquireWiii(): void mousePress«d(mouseEvent); void 'iinoAiroa mineArea; AlineArea图5 MineGame类之间组合关系的UM
8、L图以下是UML图中有关数据和方法的详细说明。1)成员变量 Block是Block类型的数组,用来确定雷区有多少需进行扫雷的方块。 blockView是Blockview类型的数组,负责为block数组中的Block对象提供视图。, Lay是La州ines类型的对象,负责设置block数组中的哪些方块是雷或不是雷。Record负责提供保存成绩的界面,是一个对话框,默认不可见。用户只有扫雷成功后(用 时最少),才能看见该对话框。 reStart是一个按钮对象,用户单击它重新开始游戏。time是计时器对象,负责计算用户的用时。2)方法 initMineArea (int, int, int, in
9、t)方法可根据参数提供的数据设置雷区的宽度,高 度,雷的数目以及雷区的级别。 actionPerformed (ActionEvent)是 MineArea 类实现 ActionListener 接 口中的方法。 当用户单击blockView中的某个方块时,actionPerformed (ActionEvent)方法负责执行 有关算法,例如,当用鼠标左键单击方块上的按钮后,若该方块下有雷,actionPerformed(ActionEvent )方法将使用户输掉本局,若该方块下又雷,ac t i onPer f ormed (Ac t i onEven t) 方法将显示BlockView对象
10、中的标签,该标签上是一个数字,该数字代表当前方块的周围 的8个方块中总共有多少颗雷 show ()方法是一个递归方法。actionPerformed (ActionEvent)方法执行时将调用show 方法进行扫雷。 mousePress (MouseEvent)方法是 MineArea 类实现的 MouseListener 接 口中的方法,当 用户按下鼠标右键时,mousePress (MouseEvent)方法负责让方块上显示一个探雷标记。 inquireWin ()方法用来判断用户是否扫雷成功,如果成功该方法负责让record对话框 可见。所谓扫雷成功是指不仅找到了全部的雷而且用时最少。
11、3.3.3代码(见附录2)Block 类2. 4. 1.效果图Block对象负责封装雷区中方块中的数据以及对这些数据的操作,外观效果由 Blockview负责提供(见后面的BlockView)o3. 4. 2. UML 图Block类创建的对象是数组block的单元的对象。Block型数组block是MineArea类 的重要成员之一。标明Block类的主要成员变量和方法以及和MineArea类之间的组合关系 的UML图如下图6:图6 Block类的UML图以下是UML图中有关数据的方法的详细说明。1)成员变量, name是方块上的名字。, aroundMineNumber是方块周围雷的数目。
12、, mineicon是方块上雷的图标。, sMine用来表示方块是否是雷。isMark用来表示方块是否被标记。 isOpen用来表示方块是否被挖开。2)方法, setAroundMineNumber (int)方法用来设置 aroundMineNumber 的值。, getAroundMineNumber ()方法用来获取 aroundMineNumber 的值。3.4.3代码(见附录3)BlockView 类3. 5. 1.效果图BlockView创建的对象负责为Block对象提供视图,以便用户通过该视图与Block对 象交互。BlockView对象使用一个标签和按钮为Block对象提供视图
13、,标签和按钮按着卡 片布局层叠在一起,默认状态按钮遮挡住标签。当用户单击按钮后,如果Block对象时雷, BlockView对象中的标签显不的事雷的图标;如果Block对象不是雷,标签显不的是周围 雷的总数。效果如图7所示:图 7 BlockView 对象3. 5. 2. UML 图BlockView类是javaxoswing包中JPanel类的一个子类,创建的对象是数组blockView 的单元中的对象。BlockView型数组BlockView是MineArea类的重要成员之一。标明 BlockView类的主要成员变量和方法以及和MineArea类之间的组合关系的LML图如图8:图8 Mi
14、neArea类的UML图以下是UML图中有关数据的方法的详细说明。1)成员变量_, blockNameOrIcon 用来显示 Block 对象的 name, number 和 mineicon 属性。, blockCover 用来遮挡 blockNameOrIcon0, card卡片布局2)方法, giveView (Block block)方法给参数指定的Block对象提供视图,如果Block对象的 isMine属性为true,即方块是雷,那么blockNameOrlcon标签上设置的文本就是Block对 象的name属性的值,同时blockNameOrlcon标签上设置的图标就是Block
15、对象的mineicon 指定的图标。如果Block对象的isMine属性为false, blockNameOrlcon标签上设置的图 标就是Block对象的aroundMineNumber属性的值,及周围雷的数目 seeblockNameOrlcon ()方法让用户看见视图中的标签,无法看见按钮。 seeblockNameOrlcon (0方法让用户看见视图中的按钮,无法看见标签。3. 5.3代码(见附录4)LayMines 类4. 6. 1.效果图La州ines对象使用随机算法制定MineArea对象中的哪些Block对象是雷,哪些对象不 是雷,没有可现实的效果图。5. 6. 2. UML
16、图LayMines创建的对象Lay是MineArea中的重要成员,表明该类的主要成员变量和方 法以及和MineArea类之间组合关系的UML图如图9:LayMinesjMineAreajninelcons Imagelcon layMinesForBlock (B)lay: LayMines图9 LayMines类的UML图以下是UML图中有关数据的方法的详细说明。1)成员变量mineicon用来存放一个格式为gif的图像。2)方法layMinesForBlock (Block,in)方法对参数指定的Block数组进行设置,其中 int参数指定雷的数目,当指定Block数组中每
17、个单元中的方块是雷时,就将该房快上的 图标设置为minelcon,当指定Block数组中每个单元中的方块不是雷时,就将该方块的名 字设置为周围的雷的数目。3.6. 3代码(见附录5)Record 类3. 7. 1.效果图Record创建的对象负责提供保存成绩的界面,效果如图10:图10保存创建对话框3. 7. 2. UML 图Record 是 javax0 swing 包中 jDialog 对话框的子类,并实现了 ActionListener 接口。Record创建的对象:record是MineArea类的成员之一,当用户扫雷成功时,该对象提供 了保存成绩到文件的界面。标明Record类的主要
18、成员变量,方法以及和MineArea类之间 组合关系的UML图如图11:图11 Record类的UML图以下是UML图中有关数据的方法的详细说明。1)成员变量 textName提供用户扫雷优胜者输入姓名用户单击”确定“按钮,可以保存成绩2)方法 actionPerformed (ActionEvent)方法是 Record 类实现的 ActionListener 接口 中的方 法,当用户单击”确定“按钮后,该方法被执行,所执行的操作就是获取用户输入的名字 和用时然后调用writeRecord (String, String)方法将信息写入"英雄榜“中。writeRecord (Str
19、ing, String)方法负责将有关信息扫雷用时,扫雷级别,扫雷优胜者 姓名等心思写入到”英雄榜“文件。3. 7.3代码(见附录6)ShowRecord 类3.8. 1.效果图ShowRecord创建的对象负责提供显示成绩的界面,效果如图12:图12显示成绩对话框3. 8. 2. UML 图ShowRecord 是 javax0 swing 包中 JDialog 对话框的子类,并实现了 ActionListener 接口。ShowReacord创建的对象showHeroRecord是MineGame类的成员之一,当用户选择 查看”英雄榜“菜单项时,该对话框可见,提供了查看扫雷的最好成绩的界面
20、。标明 ShowRecord类的主要成员变量,方法以及和MineGame类之间组合关系的LML图如图13:图 13 ShowRecord 类的 UML 图以下是UML图中有关数据的方法的详细说明。1)成员变量File存放文件的引用用户单击”显示成绩“按钮,可以查看各个级别扫雷的最好成绩。用户单击”重新计分“按钮,可以将"英雄榜“中的成绩恢复为初始值。2)方法 actionPerformed (ActionEvent)方法是 ShowRecord 类实现的 ActionListener 接口中的方法,当用户单击”显示成绩“按钮后,该方法被执行,所执行的操作就是调用readAndShow
21、()方法。readAndShow ()方法负责读取存放在文件中的各个级别的扫雷最好成绩以及扫雷者姓名, 并显示这些相关信息。3.8. 3代码(见附录7)userDefine 类3.9. 1效果图(如图14)图14自定义窗口3. 9. 2 UML 图userDefine 是包中 Rame 框架的子类,并实现了 ActionListener 接口。userDefine 创 建的对像:usedefine是MineArea类的成员之一,当用户点击菜单栏中的游戏-自定义时, 弹出界面,在界面的文本框中输入相应的数字。然后单击确定即可,或者单击取消退出界 面。标明userDefine类的主要成员变量、方法
22、以及和MineArea类之间的组合关系的UML 图如图15所示图 15 userDefine 类的 UML 图以下是UML图中有关数据和方法的详细说明。1)成员变量行数,列数,雷数,分数:分别用来显示行数,列数,雷数,分数 行数1,列数1,雷数1,分数1:用来自定义雷区的长度值,宽度值,所有的雷数值以 及每赢一局所得的分数 说明1,说明2说明3,说明4:用来说明上述内容 容器1,容器2,容器3 :用来装Label和TextFiled,以方便布局 确定,取消;单击“确定”后,如果输入的内容合法,就会实现自定义的雷区,如果不合 法的话,就会弹出一个警告框,提示输入有误;单击“取消”退出自定义窗口。
23、2)方法actionPerformrd(ActonEvent)方法是 userDef ine 类中实现的 ActionListener 接口中 的方法,当用户单击界面的“确定”,该方法被执行,所执行的操作就是,将用户输入的信 息传入程序,实验自定义雷区的难度级别。当用户单击界面的“取消”,该方法被执行,所 执行的操作就是,退出用户自定义界面。2. 9.3代码(见附录8 )voiceShow 类3. 10. 1效果图(如图16)图16背景音乐窗口4. 10.2 UML 图voiceShow是包中Rame框架的子类,并实现了 ActionListener接口。voiceShow创建 的对像:voi
24、ceshow是MineArea类的成员之一,当用户点击菜单栏中的游戏-背景音乐时, 弹出界面,单击下拉列表,选择背景音乐,然后单击一次播放,就可以实现有背景音乐, 循环播放和停止播放类似。标明author类的主要成员变量、方法以及和MineArea类之间 的组合关系的UML图如图17所示图 17 voiceShow 类的 UML 图以下是UML图中有关数据和方法的详细说明。1)成员变量 lai:用来显示“选择播放曲目”,Chi:音乐选择下拉列表 Bul,bu2,bu3;分别表示一次播放,循环播放,停止播放,单击后实现相应的功能, url;用来表示所选择音乐的URL clip:音乐播放中类,用以
25、实现音乐的播放功能:, str, strl;表示所选择音乐的Itme的值2)方法actionPerformrd(ActonEvent)方法是 voiceShow 类中实现的 ActionListener 接口中 的方法,当用户单击界面的“一次播放”,该方法被执行,所执行的操作就是,开始播放音 乐。当用户单击界面的“循环播放”,该方法被执行,所执行的操作就是,开始循环播放音 乐。当用户单击界面的“停止”,该方法被执行,所执行的操作就是,停止正在播放音乐。3. 10.3代码(见附录9 )ruleShow 类3. 11. 1效果图(如图18)图18游戏规则3. 11.2 UML 图ruleShow是
26、包中JRame框架的子类,并实现了 ActionListener接口。ruleShow创建 的对像:ruleshow是MineArea类的成员之一,当用户点击菜单栏中的帮助-游戏规则时, 弹出界面,说明游戏,标明author类的主要成员变量、方法以及和MineArea类之间的组 合关系的UML图如图19所示图 19 rul eShow 类的 UML 图以下是UML图中有关数据和方法的详细说明。D成员变量 lai:用来显示扫雷游戏的规则如下 Ia2,la2;用来显示下面几条游戏规则 Coni,Con2,Con3;用来装lal,la2以实现在JFrame中布局;, bui;用记单击bul,关闭窗口
27、;2)方法actionPerformrd(ActonEvent)方法是 ruleShow 类中实现的 ActionListener 接 口中的 方法,当用户单击界面的“确定”,该方法被执行,所执行的操作就是,并关闭界面。3. 11.3代码(见附录10 )authorShow 类3. 12. 1效果图(如图20)图20作者及意见3. 12.2 UML 图authorShow 是包中 JRame 框架的子类,并实现了 ActionListener 接口。authorShow 创建的对像:authorshow是Mi ne Area类的成员之一,当用户点击菜单栏中的帮助-制作 人时,弹出界面,说明作者
28、信息以及传入用户提交的建议,标明author类的主要成员变量、 方法以及和MineArea类之间的组合关系的UML图如下所示以下是UML图中有关数据和方法的详细说明。1)成员变量bul:用户单击bul,可以提交用户输入的信息以及关闭窗口txl:用来输入用户的建议 lai, la2:用来显示作者信息2)方法actionPerformrd(ActonEvent)方法是 authorShow 类中实现的 Act ionListener 接口中 的方法,当用户单击界面的“确定”,该方法被执行,所执行的操作就是将用户的建议与意 见保存在一个文档中,并关闭界面。3. 12.3代码(见附录11 )所需图像预
29、备名字为、图像文件,其中、分别是扫雷时所用的“标记”图像“雷”的图 像,、用于authorShow中作者的图像。所需音频准备好 爆炸声.wav、猜不透.wav、范逸臣不说出的温柔.wav、林宥嘉-说谎.wav和 我舍不得弦子.wav等音频文件(注意,一定要是wav格式的音频文件)其中爆炸声.*av用 于Minearea中,当点到雷就会发出声音,其余用于voiceShow中用来显示背景音乐。整体效果3. 15. 1初始界面(图21)图21初始界面3. 15.2单击游戏-自定义-确定(图22、23)3. 15.3单击游戏-背景声音-一次播放(图24、25)择曲目一次搪放I循环皤放I信止皤放I图25
30、播放音乐国选择背景音乐I。1回 13gl'选择播放曲目图24背景音乐界面3.15.4单击帮助-游戏规则(图26)图26游戏规则界面3. 15.5单击帮助-制作人(图27)图27作者及意见四、本设计改进建议1、界面的美观性做的不太好,比如说布局,颜色搭配有待改进2、背景音乐在播方的时候有一点小问题,比如单击停止播放,音乐并没有停止,需要单击 2次或多次;另外背景音乐似乎很占内存,运行的时候容易死机。3、MineGame的初始化界面大小难以控制,特别是在自定义的情况下,需在手动改面窗口 的大小。五、总结(感想和心得等)1、做完之后,确实有一点成就感,这种感觉激励着自已更加努力的学习这门课程
31、2、编程的进程肯定会遇到困难,要充分利用现有的资源比如说互联网,书籍,这次实验 多亏在在网上找的Java API,帮助我解决了不小困难。3、要有团队合作精神,很感谢我的认友在这次实验给予我的帮助。六、主要参考文献1 Java课程设计(第二版)清华大学出版社耿祥义张跃平2 Java2实用教程(第三版)清华大学出版社耿祥义等3孙卫琴.精通Struts:基于MVC的Java Web设计与开发.北京:电子工业出版社,4JAVA语言与面向对象程序设计.印旻.清华大学出版社。5JavaApplet实例编程,赤金、聂松编著,中国水利水电出版社6 ( Java开发利器一一Eclipse从入门到精通张峰科技编,
32、清华大学出版社7Java2核心第二版窗体底端8 Sun中国技术社区9 Java 之家10 Apache社区附录附录1:import . *;import . *;import . *;import . *;import class MineGame extends JFrame implements ActionListenerJMenuBar bar;JMenu fileMenu,fileMenul;xt;Hashtable hashtable=nul1;ShowRecord showHeroRecord=nul1;userDefineuserdefine=newuserDefine();e
33、tAccelerator,);etAccelevator,);etAccelerator,);etAccelerator,);etAccelerato r,);etAccelerator,);etAccelerator,);etAccelerator,);etAccelerator,);ddActionListener(this ); 中级.addAct ionListener (this); 高级.addActionListener (this); 扫雷英雄榜.addActionListener (this); 自定义.addActionListener(this);ddActionList
34、ener(this);ddActionListener(this);dd?ctionListener (this) ; dd.4ct ionListener (this);hashtable=new Hashtable(); ("初级"J初级速+999+中匿名”); (”中级","中级#"+999+中匿名”); ("高级","高级#"+999+"#匿名”); if (!英雄榜.existsO) try FileOutputStream out-new FileOutputStream(英雄榜);
35、ObjectOutputStream objectOut=new ObjectOutputStream(out); (hashtable); 0; 0; ) catch(IOException e) showHeroRecord=new ShowRecord(this,hashtable); setBounds(100,100,280,380); setVisible(true); setDefau1tC1oseOperation; val idate(); )public void actionPerformed(ActionEvent e) (if()=初级)(8,8,10,1); set
36、Bounds(100,100,360,340); if()=中级)(16,16,40,2);setBounds(100,100,320,420); if() =高级) (22,22,99,3);setBounds(100,100,390,450);if()=自定义);import . *;import . *;import . *;import . *;public class MineArea extends JPanel implements ActionListener.MouseListener(JButton reStart;Block 口口 block;BlockView bloc
37、kView;URL urhav";showMarkedMineCount=new JTextField(4);*(newColor(255,0,0);iveView(blockij);etBlockCover(). addAct ionListener(this);blockViewij. getBlockCover(). addMouseListener(this);blockViewEij. seeBlockCover();blockViewij. getBlockCover(). setEnabled(true);blockViewij. getBlockCover(). se
38、t Icon(null);)(rrrT+markMount);validate();)public void setRow(int row)=row;)public void setColum(int colum)=colum:)public void setMineCount(int mineCount)=mineCount;)public void setGrade(int grade) =grade;)public void actionPerformed(ActionEvent e)(if () !=reStart&&() !=time)(0;int m=-ltn=-l
39、;for(int i=0;i<row;i+)for(int j=0;j<colum;j+)if 0=blockViewi j. getBlockCover() (m=i;n=j;break;)if (block m n. isMineO) for(int i=0;i<row;i+) for(int j=0;j<colum;j+) blockViewfij. getBlockCover(). setEnabled(false);if (blocki j. isMineO)blockViewtij. seeBlockNameOrlcon();)try(File file=n
40、ew File(str);url=();clip=(url);();catch(Exception h) 0;spendTime=0;markMount=mi neCount;)else show(m,n);etAroundMineNumber()>0&&blockmn. getIsOpen()=false)blockViewmn. seeBlockNameOrlcon();blockmn. setIsOpen(true);return;else if(blockmn. getAroundMineNumber()=0&&blockmn. getlsOpen
41、()=false) blockViewmn. seeBlockNameOrlcon();blocktmn. setIsOpen(true);for(int k=(m-110);k<=(m+11row-1);k+) for(int t=(n-l10);t<= (n+1,colum-1);t+) show(kt t);)public void mousePressed(MouseEvent e) JButton source=(JButton)();for(int i=0;i<row;i+) for(int j=0;j<colum;j+) if ()=&&
42、source=blockViewij. getBlockCover() if (blocki j. getlsMarkO) (null);blocki j. setlsMark(false); markMount=markMount+l:CM+markMount);)else(mark);blocki j. setlsMark(true); markMount=markMount-l : CH+markMount);)public void inquireWin() int number-0; for(int i=0;i<row;i+) for(int j=0;j<colum;j+
43、) if (blockti j. ge11sOpen() =fa 1 se) number+;)i f(number=mi neCount)0;record=new Record();switch(grade)case 1: C*初级");break;case 2:("中级");break;case 3:("高级");break;)(spendTime);(true);)public void mouseReleased(MouseEvent e)public void mouseEntered(MouseEvent e) public voi
44、d mouseExited(MouseEvent e) public void moused icked(MouseEvent e)附录3:import class Block String name;;import . *;public class BlockView extends JPanel(JLabel blockNameOrlcon; CardLayout card;import . *; public class LayMinesImageicon mineicon;LayMines () minelcon=new Imageicon(nn); )public void layM
45、 i nesForBl ock (Block block口,int mineCount) int row=;int column=block0. length;LinkedList<Block> 1ist=new LinkedList<Block>();for(int i=0;i<row;i+) for(int j=0;j<column;j+) (blockti j);)while(mineCount>0) int size=() ;sMineO) blocktij. setlsOpen(false); blocktij. setIsMark(fals
46、e); else int mineNumber=O;for(int k=(i-l,0);k<=(i + l,row-1);k+) for(int t=(j-l,0);t<=(j+ltcolumn-1);t+) if (block k t. isMineO)mineNumber+; ) )blockij. setlsOpen(false); blockij. setlsMark(false); blocktij. setName(R"+mineNumber); blockij. setAroundMineNumber(mineNumber); ) )附录6:import .
47、 *;import *;import . *;import . *;public class Record extends JDialog implements .ActionListener int time=0;String grade=nul1;String key=null;String message=nul1 ;JTextField textName;JLabel label=nul1;JButton确定,取消;public Record()setTitle("记录你的成绩”);=time;=grade;setBounds(100,100,240,160);setRes
48、i zable(false);setModal(true);确定二new JButton("确定"); 取消=new JButton("取消"); textName=new JTextField(8); ("匿名");确定.addActionListener (this); 取消.addActionListener (this); setLayout(new GridLayout(2.1);labebnew JLabel("您现在是.高手,输入您的大名上榜"); add(label);JPanel p=new JP
49、anelO;(textName);(确定); (取消); add(p); setDefaultCloseOperation ; ) public void setGrade(String grade)=grade;("您现在是"+grade+"高手,输入您的大名上榜");)public void setTime(int time)=time;)public void actionPerformed(ActionEvent e) if ()=确定)message二gradc+"#"+t+ ” '+(); key二grade;wr
50、iteRecord(key,message);setVisible(false);)if ()=取消)setVisible(false);)public void writeRecord(String key,String message) File f=new File("英雄榜.txt");try FilelnputStream in二new FilelnputStream(f);ObjectInputStream object in=new ObjectlnputStream(in); Hashtable hashtable=(Hashtable)();0;0;Str
51、ing temp=(String)(key);StringTokenizer fenxi=new StringTokenizer(temp,n?tn); 0; int n=(); if(time<n) (key,message);FileOutputStream out-new Fi1eOutputStream(f);ObjectOutputStream object out=new ObjectOutputStream(out); (hashtable); 0; 0; )catch(Exception e) )附录7:import , *;import , *;import . *;
52、import . *; public class ShowRecord extends JDialog implements ActionListenerFile file=new File("英雄榜. txt");String name=nul1;Hashtable hashtable=nul1;JButton显示,重新记分;JLabel label 初级, label 中级, label 高级口; public ShowRecord(JFrame frame,Hashtable h) setTitle("扫雷英雄榜); hashtable=h; setBoun
53、ds (100,100,320,185);setResizable(false);setVisible(false);setModal(true);label 初级二new JLabel 3;label 中级=new JLabel 3;label 高级=new JLabel 3;for(int i=0;i<3;i+) label 初级i=new JLabel ();label 初级i. sctBorder(null);label 中级i=new JLabel();label 中级i. sctBorder (null);label 高级i:new JLabel (); label ii.
54、set Border (null);)label 初级0. setText ("初级”);label 初级1. setText (""+999);label 初级1. setText ("匿名");label 中级0. setText("中级");label 中级l.setText("”+999);label 中级1. setText ("匿名");label 高级0.setText("高级!;label 高级l.setText(""+999);label 高级1.
55、 setText ("匿名");JPanel pCenter=new JPanel();(new GridLayout(3,3);for(int i=0;i<3;i+) (label 初级i);for(int i=0;i<3;i+) (label 中级i);for(int i=0;i<3;i+)(label 高级i);("扫雷英雄榜");显示二new JButton("显示成绩”);重新记分=ne* JButton("重新记分");显示.addActionListener (this);重新记分.addAct ionListener (this);JPanel pSouth=new JPanel ();(new FlowLayout);(重新记分);(显示);add(pCenter,;add(pSouth,;)public void read?ndShow() try FilelnputStream in=new FileInputStream(file);ObjectInputStream object in=new ObjectlnputStream(in);hashtable=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美国地理考试题及答案
- 七年级地理上册2.2众多的人口练习题无答案中图版
- 系统架构设计师考试基础框架试题及答案
- 聚焦文化产业管理证书试题及答案
- 单位采购面试题及答案
- 狗狗犯罪测试题及答案
- 药剂科学的伦理与责任试题及答案
- 西医临床科研方法试题及答案
- 西医临床患者满意度评估试题及答案
- 光电工程师考试经典题型与解题方法试题及答案
- 项目管理人员安全教育课件
- 汉字的五行属性与三才五格计算方法
- 唐山高科总部大厦幕墙工程幕墙招标技术评估总结
- 苏教版三年级下册数学 第三单元 解决问题的策略 测试卷
- 10kV线路拆除
- 高中学生选课指导手册
- 为老年人更换纸尿裤评分标准
- 教务管理系统UML模型PPT课件
- 吸收塔及烟囱施工方案
- 高中数学答题卡模板word版(共2页)
- 小型构件预制场建设方案
评论
0/150
提交评论