ImageVerifierCode 换一换
格式:DOCX , 页数:44 ,大小:339.14KB ,
资源ID:7928005      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7928005.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(扫雷游戏课程设计报告整合.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

扫雷游戏课程设计报告整合.docx

1、扫雷游戏课程设计报告整合 面向对象程序设计课程设计报告题 目: 扫雷游戏设计 院 (系): 计算机与电子系 专业班级: 计算机科学与技术0903班 学生姓名: = 学 号: = 指导教师: = 20 12 年 6 月 4 日至20 12 年 6 月 15 日华中科技大学武昌分校制 面向对象程序设计 课程设计任务书一、设计(调查报告/论文)题目扫雷游戏设计二、设计(调查报告/论文)主要内容内容:Windows系统提供的扫雷游戏是一个很有趣的游戏。这里使用Java语言编写一个与其类似的扫雷游戏。 基本功能与要求:1扫雷游戏分为初级,中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出全部的

2、地雷且用时最少者。游戏菜单可以选择“初级”,“中级”和“高级”或“查看英雄榜”。2选择级别后将出现相应级别的扫雷区域,这时用户使用鼠标左键单击雷区中的任何一个方块启动计时器。3用户要揭开某个方块,可单击它。若所揭方块下有雷,用户便输了这一局,若所揭方块下无雷,则显示数字,该数字代表方块周围的八个方块中共有多少颗雷。4如果用户认为某个方块下埋有地雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户标记是否正确),程序将显示剩余雷数减少一个。5. 扫雷胜利后(用时最少者),程序弹出保存成绩对话框。三、原始资料1.面向对象程序设计课程设计指导书2

3、. 耿祥义JAVA大学实用教程北京:清华大学出版社,2009四、要求的设计(调查/论文)成果1.课程设计报告2.课程设计软件五、进程安排布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设报告2天六、主要参考资料1 张广彬. Java课程设计案例精编(第二版).北京:清华大学出版社, 2011. 2 耿祥义. Java课程设计(第二版).北京:清华大学出版社, 2008.3 耿祥义JAVA大学实用教程北京:清华大学出版社,20094 邹林达陈国君 Java2程序设计基础北京:清华大学出版社,20105 邹林达Java2程序设计基础实验指导北京

4、:清华大学,2010指导教师(签名): 20 年 月 日1需求与总体设计11.1需求分析11.2总体设计12详细设计42.1 MineGame类42.2 MineArea类52.3 Block类62.4 BlockView类72.5 LayMines类82.6 Record类82.7 ShowRecord类92.8 userDifine类93编码实现113.1 MineGame类113.2 MineArea类143.3 Block类173.4 BlockView类183.5 LayMines类193.6 Record类203.7 ShowRecord类213.8 userDifine类244系

5、统测试26总结301需求与总体设计1.1需求分析1.11扫雷游戏概述扫雷是一种具有迷惑性的对记忆和推理能力的简单测试,它是长久以来最受欢迎的 Windows 游戏之一。游戏目标:找出空方块,同时避免触雷。1.1.2扫雷的操作方法游戏主区域由很多个方格组成。使用鼠标随机点击一个方格,方格即被打开并显示出方格中的数字;方格中数字则表示其周围的8个方格隐藏了几颗雷;如果点开的格子为空白格,即其周围有0颗雷,则其周围格子自动打开。例如,方格中出现1,说明上下左右及斜角合计有一颗雷,依次类推,2则有2颗,3则有3颗。1.1.3游戏具有的功能.能够显示主菜单和界面游戏需要提供主菜单让玩家进行游戏设置,同时

6、能够显示当前剩余的地雷数量及当前花费时间等相关信息到界面上。.能够接收鼠标输入功能能够接收玩家的鼠标输入功能,左键和右键输入。. 能够根据规则翻转相应的格子翻动指定位置的格子。. 能够标示指定格子的功能即能够对确定或者怀疑是地雷的格子进行旗子和?符号的标示。.游戏胜负判断功能当玩家单击的格子中有地雷时,判定玩家失败,游戏结束。当扫雷游戏中全部格子被打开时,判定玩家成功。英雄榜记录更新当有玩家把当前等级的地雷全部扫出来后,并且时间比记录中的时间短时,在结束游戏时,要求玩家把名字保存下来。游戏初始时时间为999秒。例如,当第一个玩家把全部地雷扫出来的时间为120秒,这时玩家的记录时间将被保存下来并

7、作为记录时间线。直到有玩家的时间少于120秒,才能更新当前记录时间线并保存玩家的名字。1.2总体设计在设计扫雷游戏时,需要编写8个Java源文件:MineGame.java、MineArea.java、Block.java、BlockView.java、userDefine.java、LayMines.java、Record.java和ShowRecord.java.扫雷游戏除了需要编写上述8个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,例如File、JButton和JLabel等类。扫雷游戏所用到的一些重要的类以及之间的组合关系如图1-1所示,系统功能图如图1-2所示。

8、1.2.1 MineGame.java(主类)MineGame类负责创建扫雷游戏主窗口,该文件含有main方法。扫雷游戏从该类开始执行。1.2.2 MineArea.javaMineArea类创建的对象是MineArea类最重要的成员之一,代表“扫雷区域”。1.2.3 Block.javaBlock类是雷区中“方块”的类封装,含有关于“方块”的属性以及操作,即负责为雷区创建代表“方块”的Block对象。1.2.4 BlockView.javaBlockView是JPanel容器的子类,BlockView创建的对象负责为Block对象提供视图,以方便用户通过该视图与Block对象交互。1.2.5

9、 LayMines.javaLayMine类对象不需要视图,在游戏中不需要看见该类。LayMine对象使用随机算法指定MineArea对象中的哪些Block对象是雷,哪些Block对象不是雷。1.2.6 Record.javaRecord类是JDialog对话框的子类,对用户扫雷成功时,Record对象负责保存用户的成绩到文件。1.2.7 ShowRecord.javaShowRecord类是JDialog对话框的子类,当用户查看扫雷的最好成绩时,ShowRecord对象负责提供读取文件数据的界面。1.2.8 userDefine 类userDefine 类是JDialog对话框的子类,当用户

10、想自定义扫雷难度时,ShowRecord对象负责设置用户想要的难度设置。2详细设计2.1 MineGame类 MineGame类是javax.swing包中JFrame的一个子类,并实现了ActionListener接口。标明该类的只要成员变量和方法的UML图如图2-1所示。以下是UML图中有关数据和方法的详细说明。1)成员变量a.bar和fileMenu提供菜单操作,单击游戏菜单项为“开始”、“初级”、“中级”、“高级”、“扫雷英雄榜”、“自定义”和“退出”。单击帮助菜单项为“关于”。b.mineArea是扫雷区域,提供有关扫雷的主要功能。c.“英雄榜”负责存放三个级别的扫雷最好成绩。d.s

11、howHeroRecord负责显示英雄榜中的数据。2)方法AMineGame()是构造方法,负责完成窗口的初始化。BActionPerformed(ActionEven)方法是MineGame类实现的ActionListener接口中的方法,该方法负责执行菜单发出的有关命令。用户选择菜单中的菜单项可触发ActionEvent事件,导致actionPerformed(ActionEvent)方法执行相应的操作,例如将mineArea创建的雷区设置为初级、中级、高级。Cmain(String)方法是程序运行的入口方法。2.2 MineArea类 MineArea类是javax.swing包中JPa

12、nel容器的子类,实现了ActionListener和MouseListener接口,所创建的对象:mineArea是MineGame类中最重要的成员之一,作为一个容器添加到MineGame窗口的中心。标明MineArea类的主要成员变量、方法以及和MineGame类之间组合关系的UML图如图2-2所示。以下是UML图中有关数据和方法的详细说明。1)成员变量a. Block是Block类型的数组,用来确定雷区有多少需进行扫雷的方块。b. blockView是Blockview类型的数组,负责为block数组中的Block对象提供视图。c. Lay是LayMines类型的对象,负责设置block

13、数组中的哪些方块是雷或不是雷。d. Record负责提供保存成绩的界面,是一个对话框,默认不可见。用户只有扫雷成功后(用时最少),才能看见该对话框。e. reStart是一个按钮对象,用户单击它重新开始游戏。f. time是计时器对象,负责计算用户的用时。2)方法A. initMineArea(int,int,int,int)方法可根据参数提供的数据设置雷区的宽度,高度,雷的数目以及雷区的级别。B. actionPerformed(ActionEvent)是MIneArea类实现ActionListener接口中的方法。当用户单击blockView中的某个方块时,actionPerformed

14、(ActionEvent)方法负责执行有关算法,例如,当用鼠标左键单击方块上的按钮后,若该方块下有雷,actionPerformed(ActionEvent)方法将使用户输掉本局,若该方块下又雷,actionPerformed(ActionEvent)方法将显示BlockView对象中的标签,该标签上是一个数字,该数字代表当前方块的周围的8个方块中总共有多少颗雷。C. show()方法是一个递归方法。actionPerformed(ActionEvent)方法执行时将调用show方法进行扫雷。D. mousePress(MouseEvent)方法是MineArea类实现的MouseListen

15、er接口中的方法,当用户按下鼠标右键时,mousePress(MouseEvent)方法负责让方块上显示一个探雷标记。E. inquireWin()方法用来判断用户是否扫雷成功,如果成功该方法负责让record对话框可见。所谓扫雷成功是指不仅找到了全部的雷而且用时最少。2.3 Block类 Block对象负责封装雷区中方块中的数据以及对这些数据的操作,外观效果由Blockview负责提供(见后面的BlockView)。Block类创建的对象是数组block的单元的对象。Block型数组block是MineArea类的重要成员之一。标明Block类的主要成员变量和方法以及和MineArea类之间

16、的组合关系的UML图如下图2-3所示。图2-3 Block类的UML图以下是UML图中有关数据的方法的详细说明。1)成员变量a. name是方块上的名字。b. aroundMineNumber是方块周围雷的数目。c. mineIcon是方块上雷的图标。d. sMine用来表示方块是否是雷。e. isMark用来表示方块是否被标记。f. isOpen用来表示方块是否被挖开。2)方法A. setAroundMineNumber(int)方法用来设置aroundMineNumber的值。B. getAroundMineNumber()方法用来获取aroundMineNumber的值。2.4 Bloc

17、kView类BlockView创建的对象负责为Block对象提供视图,以便用户通过该视图与Block对象交互。BlockView对象使用一个标签和按钮为Block对象提供视图,标签和按钮按着卡片布局层叠在一起,默认状态按钮遮挡住标签。当用户单击按钮后,如果Block对象时雷,BlockView对象中的标签显示的事雷的图标;如果Block对象不是雷,标签显示的是周围雷的总数。BlockView类是javax。swing包中JPanel类的一个子类,创建的对象是数组blockView的单元中的对象。BlockView型数组BlockView是MineArea类的重要成员之一。标明BlockView

18、类的主要成员变量和方法以及和MineArea类之间的组合关系的UML图如图2-4所示。图2-4 BlockView类的UML图以下是UML图中有关数据的方法的详细说明。1)成员变量a. blockNameOrIcon用来显示Block对象的name,number和mineIcon属性。b. blockCover用来遮挡blockNameOrIcon。c. card卡片布局。2)方法A. giveView(Block block)方法给参数指定的Block对象提供视图,如果Block对象的isMine属性为true,即方块是雷,那么blockNameOrIcon标签上设置的文本就是Block对象

19、的name属性的值,同时blockNameOrIcon标签上设置的图标就是Block对象的mineIcon指定的图标。如果Block对象的isMine属性为false,blockNameOrIcon标签上设置的图标就是Block对象的aroundMineNumber属性的值,及周围雷的数目B. seeblockNameOrIcon()方法让用户看见视图中的标签,无法看见按钮。C. seeblockNameOrIcon(0方法让用户看见视图中的按钮,无法看见标签。2.5 LayMines类 LayMines对象使用随机算法制定MineArea对象中的哪些Block对象是雷,哪些对象不是雷,没有可

20、现实的效果图。LayMines创建的对象Lay是MineArea中的重要成员,表明该类的主要成员变量和方法以及和MineArea类之间组合关系的UML图如图2-5所示。图2-5 LayMines类的UML图以下是UML图中有关数据的方法的详细说明。1)成员变量 mineIcon用来存放一个格式为gif的图像。2)方法layMinesForBlock(Block,in)方法对参数指定的Block数组进行设置,其中int参数指定雷的数目,当指定Block数组中每个单元中的方块是雷时,就将该房快上的图标设置为mineIcon,当指定Block数组中每个单元中的方块不是雷时,就将该方块的名字设置为周围

21、的雷的数目。2.6 Record类Record创建的对象负责提供保存成绩的界面。Record是javax。swing包中jDialog对话框的子类,并实现了ActionListener接口。Record创建的对象:record是MineArea类的成员之一,当用户扫雷成功时,该对象提供了保存成绩到文件的界面。标明Record类的主要成员变量,方法以及和MineArea类之间组合关系的UML图如图2-6所示。图2-6 Record类的UML图以下是UML图中有关数据的方法的详细说明。1)成员变量textName提供用户扫雷优胜者输入姓名用户单击”确定“按钮,可以保存成绩2)方法actionPer

22、formed(ActionEvent)方法是Record类实现的ActionListener接口中的方法,当用户单击”确定“按钮后,该方法被执行,所执行的操作就是获取用户输入的名字和用时然后调用writeRecord(String,String)方法将信息写入”英雄榜“中。writeRecord(String,String)方法负责将有关信息扫雷用时,扫雷级别,扫雷优胜者姓名等心思写入到”英雄榜“文件。2.7 ShowRecord类ShowRecord创建的对象负责提供显示成绩的界面。ShowRecord是javax。swing包中JDialog对话框的子类,并实现了ActionListene

23、r接口。ShowReacord创建的对象showHeroRecord是MineGame类的成员之一,当用户选择查看英雄榜“菜单项时,该对话框可见,提供了查看扫雷的最好成绩的界面。标明ShowRecord类的主要成员变量,方法以及和MineGame类之间组合关系的UML图如图2-7所示。图2-7 ShowRecord类的UML图以下是UML图中有关数据的方法的详细说明。1)成员变量File存放文件的引用用户单击”显示成绩“按钮,可以查看各个级别扫雷的最好成绩。用户单击”重新计分“按钮,可以将”英雄榜“中的成绩恢复为初始值。2)方法actionPerformed(ActionEvent)方法是Sh

24、owRecord类实现的ActionListener接口中的方法,当用户单击”显示成绩“按钮后,该方法被执行,所执行的操作就是调用readAndShow()方法。readAndShow()方法负责读取存放在文件中的各个级别的扫雷最好成绩以及扫雷者姓名,并显示这些相关信息。2.8 userDefine 类userDefine是java.awt包中Rame框架的子类,并实现了ActionListener接口。userDefine创建的对像:usedefine是MineArea类的成员之一,当用户点击菜单栏中的游戏-自定义时,弹出界面,在界面的文本框中输入相应的数字。然后单击确定即可,或者单击取消退

25、出界面。标明userDefine类的主要成员变量、方法以及和MineArea类之间的组合关系的UML图如图2-8所示。以下是UML图中有关数据和方法的详细说明。1)成员变量a. row,colum,mineCount,score:分别用来显示行数,列数,雷数,分数b. row1,colum1, mineCount1,score1:用来自定义雷区的长度值,宽度值,所有的雷数值以及每赢一局所得的分数c. ex1,ex2,ex3,ex4::用来说明上述内容d. con1,con2,con3,con4:用来装Label 和TextFiled,以方便布局e. 确定,取消;单击“确定”后,如果输入的内容合

26、法,就会实现自定义的雷区,如果不合法的话,就会弹出一个警告框,提示输入有误;单击“取消”退出自定义窗口。2)方法 actionPerformrd(ActonEvent)方法是userDefine类中实现的ActionListener接口中的方法,当用户单击界面的“确定”,该方法被执行,所执行的操作就是,将用户输入的信息传入程序,实验自定义雷区的难度级别。当用户单击界面的“取消”,该方法被执行,所执行的操作就是,退出用户自定义界面。3编码实现各个类的的主要源代码实现如下:3.1 MineGame.java(主类)import java.awt.event.*;/包含事件类import java.

27、awt.*;/包含抽象窗口工具集中的图形文本、窗口GUI类import javax.swing.*;/包含SWING组件import javax.swing.Box.Filler;import javax.swing.border.*;/包含布局类import java.util.*;/包含有用的数据类型类import java.util.List;import java.io.*;/包含输入流和输出流类import javax.swing.ImageIcon;/包含图标public class MineGame extends JFrame implements ActionListener

28、 JMenuBar menubar; /负责创建菜单条 JMenuItem 开始,初级,中级,高级,扫雷英雄榜,自定义,退出,关于;/负责创建菜单项 JMenu fileMenu,helpMenu;/负责创建菜单 ImageIcon app;/负责创建标题栏的图标 JLabel l1,l2,l3,l4; JTextArea ta; MineArea mineArea=null; File 英雄榜=new File(英雄榜.txt);/创建文件保存记录 Hashtable hashtable=null; ShowRecord showHeroRecord=null; userDefine userdefine=new userDefine();/调用userDefine类 MineGame() mineArea=new MineArea(8,8,10,1); add(mineArea,BorderLayout.CENTER); app=new ImageIcon(app.gif);/给标题栏创建图标 setIconImage(app.getImage();/获取图标并调用类实现 setTitle(扫雷); /加入标题字段 menubar=new JMenuBar();/创建菜单条 JMenu fileMenu=new JMenu(游戏(G);/创建菜单 JMenu helpMenu

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1