当前位置:文档之家› Java-扫雷游戏-课程设计

Java-扫雷游戏-课程设计

Java 课程设计题目:扫雷游戏…系别信息与计算科学专业班级信息与计算科学091班学生姓名余启张昱宋加望指导教师贺慧琳提交日期 2012年5月25日目录一、设计目的(一级标题,用黑体小三) (3)二、设计要求和设计指标 (3)三、设计内容 (3)总体设计3MineGame类4MineArea5Block类7BlockView类7LayMines类9Record类9ShowRecord类10userDefine 类11voiceShow类13ruleShow 类14authorShow 类16所需图像17所需音频17整体效果17四、本设计改进和建议 (20)五、总结(感想和心得等) (20)六、主要参考文献 (20)附录 (20)一、设计目的通过选择《Java课程设计(第二版)》中扫雷游戏,这个综合性的题目作为本次的课程设计。

可以让我们更加熟悉Java程序设计这门课程,学会熟练使用Jcreator这个软件,加深对Java语言的掌握,提高编程水平。

同时培养独立思考和同学间团结合作的能力,为毕业设计以及将来的工作打下坚实的基础。

二、设计要求和设计指标参考Windows 2000/XP系统提供的扫雷游戏,改进扫雷游戏程序,增加以下功能:在主界面中添加一个菜单栏,菜单栏中包括游戏和帮助两个菜单,其中游戏菜单中设置初级、中级、高级、自定义、声音、扫雷英雄榜这几个菜单项,帮助菜单中设置游戏规则和制作人员两个菜单项。

三、设计内容总体设计在设计扫雷游戏时,需要编写个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所示图3 MineGame类的UML图以下是UML图中有关数据和方法的详细说明。

1)成员变量· bar和fileMenu提供菜单操作,单击游戏菜单中的选项为“初级”“中级”“高级”“自定义”“扫雷英雄榜”“背景声音”“退出”“游戏规则”“制作人”等·MineArea 是扫雷区域,提供有关扫雷的主要功能。

·“英雄榜”负责存放三个级别的扫雷最好成绩。

·showheroRecord负责显示英雄榜中的数据·userdefine负责用户自定义功能·VoiceShow 负责背景音乐功能·ruleshow负责显示游戏规则功能·authorshow负责显示作者功能2)·MineGame()是橘色造方法,负责完成窗口的主要功能·actionPerformed(ActionEvent)方法是MineGame类实现的ActionListerer接口中的方法,该方法负责执行菜单发出的有关命令。

用户选择菜单项可以触发ActionEvent事件,导致actionPerformed(ActionEvent)方法执行相应的操作,例如将mineAreaw创建的雷区设置为初级中级高级等·Main(String[])方法是程序的入口方法3.2.3代码(见附录1)MineArea3.3.1 效果图:(见下图4)图4 MineArea创建的扫雷区域效果图3.3.2 UML图MineArea类是包中JPanel容器的子类,实现了ActionListener和MouserListener接口,所创建的对象:mineArea是MineGame类中最重要的成员之一,作为一个容器添加到MineGame窗口的中心。

标明MineArea类的主要成员变量、方法以及和MineGame类之间组合关系的UML图如图5:图5 MineGame类之间组合关系的UML图以下是UML图中有关数据和方法的详细说明。

1)成员变量·Block是Block类型的数组,用来确定雷区有多少需进行扫雷的方块。

·blockView是Blockview类型的数组,负责为block数组中的Block对象提供视图。

·Lay是LayMines类型的对象,负责设置block数组中的哪些方块是雷或不是雷。

·Record负责提供保存成绩的界面,是一个对话框,默认不可见。

用户只有扫雷成功后(用时最少),才能看见该对话框。

·reStart是一个按钮对象,用户单击它重新开始游戏。

·time是计时器对象,负责计算用户的用时。

2)方法·initMineArea(int,int,int,int)方法可根据参数提供的数据设置雷区的宽度,高度,雷的数目以及雷区的级别。

·actionPerformed(ActionEvent)是MIneArea类实现ActionListener接口中的方法。

当用户单击blockView中的某个方块时,actionPerformed(ActionEvent)方法负责执行有关算法,例如,当用鼠标左键单击方块上的按钮后,若该方块下有雷,actionPerformed (ActionEvent)方法将使用户输掉本局,若该方块下又雷,actionPerformed(ActionEvent)方法将显示BlockView对象中的标签,该标签上是一个数字,该数字代表当前方块的周围的8个方块中总共有多少颗雷·show()方法是一个递归方法。

actionPerformed(ActionEvent)方法执行时将调用show 方法进行扫雷。

·mousePress(MouseEvent)方法是MineArea类实现的MouseListener接口中的方法,当用户按下鼠标右键时,mousePress(MouseEvent)方法负责让方块上显示一个探雷标记。

·inquireWin()方法用来判断用户是否扫雷成功,如果成功该方法负责让record对话框可见。

所谓扫雷成功是指不仅找到了全部的雷而且用时最少。

3.3.3代码(见附录2)Block类3.4.1.效果图Block对象负责封装雷区中方块中的数据以及对这些数据的操作,外观效果由Blockview负责提供(见后面的BlockView)。

3.4.2.UML图Block类创建的对象是数组block的单元的对象。

Block型数组block是MineArea类的重要成员之一。

标明Block类的主要成员变量和方法以及和MineArea类之间的组合关系的UML图如下图6:图6 Block类的UML图以下是UML图中有关数据的方法的详细说明。

1)成员变量·name是方块上的名字。

·aroundMineNumber是方块周围雷的数目。

·mineIcon是方块上雷的图标。

·sMine用来表示方块是否是雷。

·isMark用来表示方块是否被标记。

·isOpen用来表示方块是否被挖开。

2)方法·setAroundMineNumber(int)方法用来设置aroundMineNumber的值。

·getAroundMineNumber()方法用来获取aroundMineNumber的值。

3.4.3代码(见附录3)BlockView类3.5.1.效果图BlockView创建的对象负责为Block对象提供视图,以便用户通过该视图与Block对象交互。

BlockView对象使用一个标签和按钮为Block对象提供视图,标签和按钮按着卡片布局层叠在一起,默认状态按钮遮挡住标签。

当用户单击按钮后,如果Block对象时雷,BlockView对象中的标签显示的事雷的图标;如果Block对象不是雷,标签显示的是周围雷的总数。

效果如图7所示:图7 BlockView对象3.5.2.UML图BlockView类是javax。

swing包中JPanel类的一个子类,创建的对象是数组blockView 的单元中的对象。

BlockView型数组BlockView是MineArea类的重要成员之一。

标明BlockView类的主要成员变量和方法以及和MineArea类之间的组合关系的UML图如图8:图8 MineArea类的UML图以下是UML图中有关数据的方法的详细说明。

1)成员变量·blockNameOrIcon用来显示Block对象的name,number和mineIcon属性。

·blockCover用来遮挡blockNameOrIcon。

·card卡片布局2)方法·giveView(Block block)方法给参数指定的Block对象提供视图,如果Block对象的isMine属性为true,即方块是雷,那么blockNameOrIcon标签上设置的文本就是Block对象的name属性的值,同时blockNameOrIcon标签上设置的图标就是Block对象的mineIcon 指定的图标。

如果Block对象的isMine属性为false,blockNameOrIcon标签上设置的图标就是Block对象的aroundMineNumber属性的值,及周围雷的数目·seeblockNameOrIcon()方法让用户看见视图中的标签,无法看见按钮。

·seeblockNameOrIcon(0方法让用户看见视图中的按钮,无法看见标签。

3.5.3代码(见附录4)LayMines类3.6.1.效果图LayMines对象使用随机算法制定MineArea对象中的哪些Block对象是雷,哪些对象不是雷,没有可现实的效果图。

3.6.2.UML图LayMines创建的对象Lay是MineArea中的重要成员,表明该类的主要成员变量和方法以及和MineArea类之间组合关系的UML图如图9:图9 LayMines类的UML图以下是UML图中有关数据的方法的详细说明。

1)成员变量mineIcon用来存放一个格式为gif的图像。

2)方法layMinesForBlock(Block[][],in)方法对参数指定的Block数组进行设置,其中int参数指定雷的数目,当指定Block数组中每个单元中的方块是雷时,就将该房快上的图标设置为mineIcon,当指定Block数组中每个单元中的方块不是雷时,就将该方块的名字设置为周围的雷的数目。

相关主题