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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

Java课程设计扫雷文档格式.docx

1、指导教师: 2014年 月 日专业负责人:学院教学副院长:目 录1设计目的 - 42总体设计 - 43关键技术 - 54程序流程 - 85主要源代码 - 86运行结果及结论 - 267参考文献 - 291设计目的通过选择扫雷游戏软件设计,这个综合性的题目作为本次的课程设计。可以让我们更加熟悉Java程序设计这门课程,学会熟练使用Java这个软件,加深对Java语言的掌握,提高编程水平。同时培养独立思考和同学间团结合作的能力,为毕业设计以及将来的工作打下坚实的基础。2总体设计2.1 设计需求在设计扫雷游戏时,需要编写7个源文件:MineGame.java,MineArea.java,Block.

2、java,BlockView.java,LayMines.java,ShowRecord.java,Record.java 除了这七个源文件外,还需要Java系统提供一些重要的类,如File,JButton和JLabel等类。2.2 系统功能设计流程图2.3 类的组合关系3关键技术3.1 MineGame.java(主类):3.1.1 成员变量bar和fileMenu 提供菜单操作,单击菜单操作中的选项为“初级”,“中级”,“高级”或“扫雷英雄榜”;mineArea 是扫雷区域,提供有关雷的主要功能;英雄榜”负责存放三个级别的扫雷最好成绩;showHeroRecord负责显示英雄榜中的数据3.

3、1.2 方法MineGame()是构造窗口,负责完成窗口的初始化。ActionPerformed(ActionEvent)方法是MineGame类实现的ActionListener接口中的方法,该方法负责执行菜单发出的有关命令。用户选择菜单中的菜单项可触发ActionEvent事件,导致actionPerformed(ActionEvent)方法执行相应的操作。Main(String)方法是程序运行的入口方法。3.2 MineArea.java:3.2.1 成员变量block和Block类型的数组,用来确定雷区有多少需进行扫雷的方块;blockView是BlockView类型的数组,负责blo

4、ck数组中Block对象提供视图;lay是LayMines类型的对象,负责设置block数组中的哪些方块不是雷;record负责提供保存成绩的界面,是一个对话框,默认为不可见,用户只有扫雷成功后,才可以看见该对话框;reStart是一个按钮对象,用户单击它重新开始游戏;time是计时器对象,负责计算用户用时。3.2.2 方法initMineArea(int,int,int,int)方法可根据参数提供的数据设置雷区的宽度,高度,类的数目以及雷区的级别。actionPerformed(actionEvent)是MineArea类实现的ActionListener接口中的方法。当用户单击blockV

5、iew中的某个方块时actionPerformed(actionEvent)执行有关算法。Show()方法是一个递归方法,actionPerformed(actionEvent)方法执行将调用show方法进行扫雷。mousePressed(mouseEvent)方法是MineArea类实现的MouseListener接口中的方法,当用户按下鼠标右键时,mousePressed(mouseEvent)方法负责让方块上显示一个探雷标记。inquireWin()方法用来判断用户扫雷是否成功,如果成功该方法负责让record对话框可见。3.3 Block.java:3.3.1 成员变量name方块上的

6、名字 aroundMineNumber是方块周围雷的数目 mineIcon是方块上雷的图标 isMine用来表示方块是否是雷 isMark用来表示方块是否被标记 isOpen用来表示方块是否被挖开3.3.2 方法setAroundMineNumber(int)方法用来设置aroundMineNumber的值;getAroundMineNumber()方法用来获取aroundMineNumber的值。3.4 BlockView.java3.4.1 成员变量blockNameOrIcon用来显示Block对象的name,number和mineIcon属性;blockCover用来遮挡blockNa

7、meOrIcon;card卡片式布局。3.4.2 方法giveView(Block block)方法给参数指定的Block对象提供视图;seeBlockNameOrIcon()方法让用户看见视图中的标签,无法看见按钮;seeBlockCover()方法让用户看见视图中的按钮,无法看见标签。3.5LayMines.java:3.5.1 成员变量mineIcon用来存放一个格式为gif的图像。3.5.2 方法layMinesForBlock(Block,int)方法对参数指定的Block数组进行设置,其中int参数指定雷的数目。3.6Record.java:3.6.1 成员变量textName提供

8、用户扫雷优胜者出入姓名;用户单击“确定”按钮,可以保存成绩。3.6.2 方法actionPerformed(ActionEvent)方法是Record类实现的ActionListener接口中的方法,当用户单击“确定”按钮后,该方法被执行,所执行的操作就是获取用户输入的名字和用时,然后调用writeRecord(String,String)方法将信息写入英雄榜中;writeRecord(String,String)负责将有关信息写入“英雄榜”文件。3.7 ShowRecord:3.7.1 成员变量file存放文件的引用,用户单击“显示成绩”按钮,可以查看各个级别的最好成绩;用户单击“重新计分”

9、按钮,可以将“英雄榜”中的成绩恢复为初始值。3.7.2 方法actionPerformed(ActionEvent)方法是ShowRecord类实现的ActionListener接口中的方法,当用户单击“显示成绩”按钮后,该方法被执行,所执行的操作就是调用readAndShow()方法;readAndShow()方法负责读取存放在文件中的各个级别的扫雷最好成绩以及扫雷者姓名,并显示这些相关信息。4程序流程5主要源代码import java.awt.event.*;import java.awt.*;import javax.swing.*;import javax.swing.border.*

10、;import java.util.*;import java.io.*;public class MineGame extends JFrame implements ActionListener JMenuBar bar; JMenu fileMenu; JMenuItem 初级,中级,高级,扫雷英雄榜; MineArea mineArea=null; File 英雄榜=new File(英雄榜.txt); Hashtable hashtable=null; ShowRecord showHeroRecord=null; MineGame() mineArea=new MineArea(1

11、6,16,40,1); add(mineArea,BorderLayout.CENTER); bar=new JMenuBar(); fileMenu=new JMenu(游戏 初级=new JMenuItem(初级 中级=new JMenuItem(中级 高级=new JMenuItem(高级 扫雷英雄榜=new JMenuItem(扫雷英雄榜 fileMenu.add(初级); fileMenu.add(中级); fileMenu.add(高级); fileMenu.add(扫雷英雄榜); bar.add(fileMenu); setJMenuBar(bar); 初级.addActionL

12、istener(this); 中级.addActionListener(this); 高级.addActionListener(this); 扫雷英雄榜.addActionListener(this); hashtable=new Hashtable(); hashtable.put(,初级#+999+#匿名中级#高级# if(!英雄榜.exists() try FileOutputStream out=new FileOutputStream(英雄榜); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.w

13、riteObject(hashtable); objectOut.close(); out.close(); catch(IOException e) showHeroRecord=new ShowRecord(this,hashtable); setBounds(100,100,280,380); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); validate(); public void actionPerformed(ActionEvent e) if(e.getSource()=初级) mineAre

14、a.initMineArea(8,8,10,1); setBounds(100,100,200,280); if(e.getSource()=中级) mineArea.initMineArea(16,16,40,2); if(e.getSource()=高级) mineArea.initMineArea(22,22,99,3); setBounds(100,100,350,390); if(e.getSource()=扫雷英雄榜) if(showHeroRecord!=null) showHeroRecord.setVisible(true); public static void main(

15、String args) new MineGame();public class MineArea extends JPanel implements ActionListener,MouseListener JButton reStart; Block block; BlockView blockView; LayMines lay; int row,colum,mineCount,markMount;/雷区的行数、列数以及地雷个数和用户给出的标记数 ImageIcon mark; int grade; JPanel pCenter,pNorth; JTextField showTime,s

16、howMarkedMineCount; /显示用时以及标记数 Timer time; /计时器 int spendTime=0; Record record; public MineArea(int row,int colum,int mineCount,int grade) reStart=new JButton(重新开始 mark=new ImageIcon(mark.gif /探雷标记 time=new Timer(1000,this); showTime=new JTextField(5); showMarkedMineCount=new JTextField(5); showTime

17、.setHorizontalAlignment(JTextField.CENTER); showMarkedMineCount.setHorizontalAlignment(JTextField.CENTER); showMarkedMineCount.setFont(new Font(Arial,Font.BOLD,16); showTime.setFont(new Font( pCenter=new JPanel(); pNorth=new JPanel(); lay=new LayMines(); initMineArea(row,colum,mineCount,grade); /初始化

18、雷区,见下面的LayMines() reStart.addActionListener(this); pNorth.add(showMarkedMineCount); pNorth.add(reStart); pNorth.add(showTime); setLayout(new BorderLayout(); add(pNorth,BorderLayout.NORTH); add(pCenter,BorderLayout.CENTER); public void initMineArea(int row,int colum,int mineCount,int grade) pCenter.r

19、emoveAll(); spendTime=0; markMount=mineCount; this.row=row; this.colum=colum; this.mineCount=mineCount; this.grade=grade; block=new Blockrowcolum; for(int i=0;irow;i+) for(int j=0;j0&blockmn.getIsOpen()=false) blockViewmn.seeBlockNameOrIcon(); blockmn.setIsOpen(true); return; else if(blockmn.getArou

20、ndMineNumber()=0& for(int k=Math.max(m-1,0);k=Math.min(m+1,row-1);k+) for(int t=Math.max(n-1,0);t=Math.min(n+1,colum-1);t+) show(k,t); public void mousePressed(MouseEvent e) JButton source=(JButton)e.getSource(); if(e.getModifiers()=InputEvent.BUTTON3_MASK& source=blockViewij.getBlockCover() if(blockij.getIsMark() source.setIcon(null);

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

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