您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > java课程设计-扫雷
沈阳理工大学课程设计专用1/24成绩评定表学生姓名李国嘉班级学号1103030231专业电子信息工程课程设计题目扫雷游戏设计评语组长签字:成绩日期2012年月日课程设计任务书沈阳理工大学课程设计专用2/24学院信息科学与工程学院专业电子信息工程学生姓名李国嘉班级学号1103030231课程设计题目基于Java的扫雷游戏软件设计实践教学要求与任务:采用java技术设计扫雷游戏软件,设计要求如下:(1)扫雷游戏风味初级、中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄榜”。(2)选择级别后将出现相应级别的扫雷区域,这时用户使用鼠标左键单击雷区中的任何一个方块便启动计时器。(3)用户要揭开摸个方块,可以单击它。若所揭方块下有雷,用户便输了这一局,若所揭方块下无雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。(4)如果用户认为某个方块下埋着雷,单击右键可以在方块上表示一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户是否正确),程序将显示的剩余雷数减少一个。(5)扫雷胜利后(用时最少者),程序将弹出保存成绩的对话框。工作计划与进度安排:第18周:布置课程设计任务,查阅资料,分组设计,程序调试。第19周:程序调试,编写课程设计报告,验收,答辩。指导教师:2012年月日专业负责人:2012年月日学院教学副院长:2012年月日沈阳理工大学课程设计专用3/24目录1.设计目的2.设计需求及流程3.详细设计4.运行与调试5.源代码6.设计总结1.设计目的沈阳理工大学课程设计专用4/24本次课程设计的主要目的是为了通过具体的程序来加深对Java语言的掌握,提高自己的编程水平。选择的题目来自《Java课程设计(第二版)》中的扫雷游戏,这是一个综合性的题目,可以对Java中的各项功能有更好的理解和使用,同时也为以后的工作打下一定的基础2.总体设计2.1设计需求在设计扫雷游戏时,需要编写7个源文件:MineGame.java,MineArea.java,Block.java,BlockView.java,LayMines.java,ShowRecord.java,Record.java除了这七个源文件外,还需要Java系统提供一些重要的类,如File,JButton和JLabel等类。沈阳理工大学课程设计专用5/242.2系统功能设计流程图:2.3类的组合关系开始定义并初始化获取相应的设置,并对方块产生随机数字赋值值计数器小于等级雷存放赋值雷区,计数器加1处理周围信息,并显示相应效果开始鼠标是否点击YYN沈阳理工大学课程设计专用6/24MineGameFileMineAreaShowReccordBlockBlockViewLayMinesRecordJLabelJButton沈阳理工大学课程设计专用7/243详细设计3.1MineGame.java(主类):(1)成员变量bar和fileMenu提供菜单操作,单击菜单操作中的选项为“初级”,“中级”,“高级”或“扫雷英雄榜”;mineArea是扫雷区域,提供有关雷的主要功能;英雄榜”负责存放三个级别的扫雷最好成绩;showHeroRecord负责显示英雄榜中的数据(2)方法MineGame()是构造窗口,负责完成窗口的初始化。ActionPerformed(ActionEvent)方法是MineGame类实现的ActionListener接口中的方法,该方法负责执行菜单发出的有关命令。用户选择菜单中的菜单项可触发ActionEvent事件,导致actionPerformed(ActionEvent)方法执行相应的操作。Main(String[])方法是程序运行的入口方法。3.2MineArea.java:(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)执行有关算法。Show()方法是一个递归方法。actionPerformed(actionEvent)方法执行将调用show方法进行扫雷mousePressed(mouseEvent)方法是MineArea类实现的MouseListener接口中的方法,当用户按下鼠标右键时,mousePressed(mouseEvent)方法负责让方块上显示一个探雷标记。inquireWin()方法用来判断用户扫雷是否成功,如果成功该方法负责让record对话框可见3.3Block.java:(1)成员变量name方块上的名字aroundMineNumber是方块周围雷的数目沈阳理工大学课程设计专用8/24mineIcon是方块上雷的图标isMine用来表示方块是否是雷isMark用来表示方块是否被标记isOpen用来表示方块是否被挖开(2)方法setAroundMineNumber(int)方法用来设置aroundMineNumber的值;getAroundMineNumber()方法用来获取aroundMineNumber的值。3.4BlockView.java(1)成员变量blockNameOrIcon用来显示Block对象的name,number和mineIcon属性;blockCover用来遮挡blockNameOrIcon;card卡片式布局。(2)方法giveView(Blockblock)方法给参数指定的Block对象提供视图;seeBlockNameOrIcon()方法让用户看见视图中的标签,无法看见按钮;seeBlockCover()方法让用户看见视图中的按钮,无法看见标签。3.5LayMines.java:(1)成员变量mineIcon用来存放一个格式为gif的图像。(2)方法layMinesForBlock(Block[][],int)方法对参数指定的Block数组进行设置,其中int参数指定雷的数目。3.6Record.java:(1)成员变量textName提供用户扫雷优胜者出入姓名;用户单击“确定”按钮,可以保存成绩。(2)方法actionPerformed(ActionEvent)方法是Record类实现的ActionListener接口中的方法,当用户单击“确定”按钮后,该方法被执行,所执行的操作就是获取用户输入的名字和用时,然后调用writeRecord(String,String)方法将信息写入英雄榜中;writeRecord(String,String)负责将有关信息写入“英雄榜”文件。3.7ShowRecord:(1)成员变量file存放文件的引用,用户单击“显示成绩”按钮,可以查看各个级别的最好成绩;用户单击“重新计分”按钮,可以将“英雄榜”中的成绩恢复为初始值。(2)方法actionPerformed(ActionEvent)方法是ShowRecord类实现的ActionListener接口中的方法,当用户单击“显示成绩”按钮后,该方法被执行,所执行的操作就是调用readAndShow()方法;readAndShow()方法负责读取存放在文件中的各个级别的扫雷最好成绩以及扫雷者姓名,并显示这些相关信息。沈阳理工大学课程设计专用9/244运行与调试运行界面1沈阳理工大学课程设计专用10/24运行界面2运行界面35源代码importjava.awt.event.*;importjava.awt.*;importjavax.swing.*;importjavax.swing.border.*;importjava.util.*;importjava.io.*;publicclassMineGameextendsJFrameimplementsActionListener{JMenuBarbar;JMenufileMenu;JMenuItem初级,中级,高级,扫雷英雄榜;MineAreamineArea=null;File英雄榜=newFile(英雄榜.txt);Hashtablehashtable=null;ShowRecordshowHeroRecord=null;沈阳理工大学课程设计专用11/24MineGame(){mineArea=newMineArea(16,16,40,1);add(mineArea,BorderLayout.CENTER);bar=newJMenuBar();fileMenu=newJMenu(游戏);初级=newJMenuItem(初级);中级=newJMenuItem(中级);高级=newJMenuItem(高级);扫雷英雄榜=newJMenuItem(扫雷英雄榜);fileMenu.add(初级);fileMenu.add(中级);fileMenu.add(高级);fileMenu.add(扫雷英雄榜);bar.add(fileMenu);setJMenuBar(bar);初级.addActionListener(this);中级.addActionListener(this);高级.addActionListener(this);扫雷英雄榜.addActionListener(this);hashtable=newHashtable();hashtable.put(初级,初级#+999+#匿名);hashtable.put(中级,中级#+999+#匿名);hashtable.put(高级,高级#+999+#匿名);if(!英雄榜.exists()){try{FileOutputStreamout=newFileOutputStream(英雄榜);ObjectOutputStreamobjectOut=newObjectOutputStream(out);objectOut.writeObject(hashtable);objectOut.close();out.close();}catch(IOExceptione){}}showHeroRecord=newShowRecord(this,hashtable);setBounds(100,100,280,380);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);validate();}publicvoidactionPerformed(ActionEvente){if(e.getSource()==初级){mineArea.initMineArea(8,8,10,1);setBounds(100,100,200,280);}if(e.getSource()==中级){沈阳理工大学课程设计专用12/24mineArea.initMineArea(16,16,40,2);setBounds(100,100,280,380);}if(e.getSource()==高级){mineArea.initMineArea(22,22,99,3);setBounds(100,100,350,390);}if(e.getSource()==扫雷英雄榜){if(showHeroR
本文标题:java课程设计-扫雷
链接地址:https://www.777doc.com/doc-6040204 .html