您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > java扫雷游戏的开发
1设计题目及具体要求设计题目:扫雷游戏的开发题目需求:玩者进入游戏后,开始游戏,目的是为了找出所有隐藏的小方格后一定数目地雷,进行标记,把所有地雷找出并用时最少的胜利者进出扫雷英雄榜。单击游戏菜单可以选择初级,高级,中级和扫雷英雄榜。扫雷的各个级别是根据游戏的总格子数和地雷总数来区别的,初级的总格子数最少,地雷数也最少,高级的总格子数和地雷数最多。扫雷英雄榜中记录着各个级别的第一名玩家,而且玩家可以刷新纪录。游戏上方可以显示这盘中还有多少颗地雷,还可以显示在这盘游戏中游戏进行了多长时间。选择级别后游戏去会出现相应的扫雷区域,这是玩家用鼠标单击任意一个方格,开始计时及游戏开始。玩家要揭开某个方块可单击它,若该方块不是雷,会显示出一个数字或者是一个空格子这表示一概方格为中心周围的把各方格子中总共有多少颗地雷,玩家需要进行判断继续游戏,若是地雷则玩家输了这盘游戏,这时玩家可以退出游戏或选择重新开始。若玩家确定某个方格子底下是地雷,这是可以单击鼠标右键,不管是不是正确,这时会出现一个小旗子标志,同时剩余地雷数减一个。游戏胜利后,系统会弹出对话框保存成绩可以记录胜利者的名字。实现环境及工具简介系统开发平台:Eclipse1.7数据库管理系统软件:Oracle运行平台:windowsXPJava开发包:jdk7.02总体设计总体设计:再设计扫雷游戏时,需要编写7个源文件:MineGame.java,MineArea.java,Block.java,BlockView.java,LayMines.java,ShowRecord.java,Record.java除了这七个源文件外,还需要Java系统提供一些重要的类,如File,JButton和JLabel等类。2.1MineGame.java(主类):主要负责创建扫雷游戏主窗口,该文件有main方法,扫雷游戏从该类开始执行。MineGame类主要有三种类型的成员:File,MineArea和ShowRecord对象。2.2MineArea.java:表示扫雷区域。该类的成员变量主要有四个,分别是:Block,BlockView,LayMines。2.3Block.java:雷区“方块”的封装,含有关于方块属性以及操作。2.4BlockView.java:为Block对象提供视图,如果是雷,则显示雷的图标,如果不是雷,则显示他周围的雷的总数2.5LayMines.java:使用随机算法指定MineArea对象中的那些是雷,那些不是雷2.6Record.java:扫雷成功时,用于保存用户的成绩到文件2.7ShowRecord:当用户查看扫雷最好成绩时,用于提供读取文件数据的界面3详细设计与实现3.1MineGame.java(主类):(1)成员变量bar和fileMenu提供菜单操作,单击菜单操作中的选项为“初级”,“中级”,“高级”或“扫雷英雄榜”mineArea是扫雷区域,提供有关雷的主要功能“英雄榜”负责存放三个级别的扫雷最好成绩showHeroRecord负责显示英雄榜中的数据(2)方法MineGame()是构造窗口,负责完成窗口的初始化。ActionPerformed(ActionEvent)方法是MineGame类实现的ActionListener接口中的方法,该方法负责执行菜单发出的有关命令。用户选择菜单中的菜单项可触发ActionEvent事件,导致actionPerformed(ActionEvent)方法执行相应的操作。Main(String[])方法是程序运行的入口方法。(3)实现importjava.awt.event.*;importjava.awt.*;importjavax.swing.*;importjavax.swing.border.*;importjava.util.*;importjava.io.*;publicclassMineGameextendsJFrameimplementsActionListener{………publicvoidactionPerformed(ActionEvente){………}publicstaticvoidmain(Stringargs[]){newMineGame();………}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)实现importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassMineAreaextendsJPanelimplementsActionListener,MouseListener{publicMineArea(introw,intcolum,intmineCount,intgrade){………}publicvoidinitMineArea(introw,intcolum,intmineCount,intgrade){………}publicvoidsetRow(introw){………}publicvoidsetColum(intcolum){………}publicvoidsetMineCount(intmineCount){………}publicvoidsetGrade(intgrade){………}publicvoidactionPerformed(ActionEvente){………}publicvoidshow(intm,intn){………}publicvoidmousePressed(MouseEvente){………}publicvoidinquireWin(){………}publicvoidmouseReleased(MouseEvente){}publicvoidmouseEntered(MouseEvente){}publicvoidmouseExited(MouseEvente){}publicvoidmouseClicked(MouseEvente){}}3.3Block.java:(1)成员变量name方块上的名字aroundMineNumber是方块周围雷的数目mineIcon是方块上雷的图标isMine用来表示方块是否是雷isMark用来表示方块是否被标记isOpen用来表示方块是否被挖开(2)方法setAroundMineNumber(int)方法用来设置aroundMineNumber的值getAroundMineNumber()方法用来获取aroundMineNumber的值(3)实现importjavax.swing.ImageIcon;publicclassBlock{publicvoidsetName(Stringname){………}publicvoidsetAroundMineNumber(intn){………}publicintgetAroundMineNumber(){………}publicStringgetName(){………}publicbooleanisMine(){………}publicvoidsetIsMine(booleanb){………}publicvoidsetMineIcon(ImageIconicon){………}publicImageIcongetMineicon(){………}publicbooleangetIsOpen(){………}publicvoidsetIsOpen(booleanp){………}publicbooleangetIsMark(){………}publicvoidsetIsMark(booleanm){………}}3.4BlockView.java:(1)成员变量blockNameOrIcon用来显示Block对象的name,number和mineIcon属性blockCover用来遮挡blockNameOrIconcard卡片式布局(2)方法giveView(Blockblock)方法给参数指定的Block对象提供视图seeBlockNameOrIcon()方法让用户看见视图中的标签,无法看见按钮seeBlockCover()方法让用户看见视图中的按钮,无法看见标签(3)实现importjavax.swing.*;importjava.awt.*;publicclassBlockViewextendsJPanel{publicvoidgiveView(Blockblock){………}publicvoidseeBlockNameOrIcon(){………}publicvoidseeBlockCover(){………}publicJButtongetBlockCover(){………}}3.5LayMines.java:(1)成员变量mineIcon用来存放一个格式为gif的图像(2)方法layMinesForBlock(Block[][],int)方法对参数指定的Block数组进行设置,其中int参数指定雷的数目(3)实现importjava.util.*;importjavax.swing.*;publicclassLayMines{publicvoidlayMinesForBlock(Blockblock[][],intmineCount){………}}3.6Record.java:(1)成员变量textName提供用户扫雷优胜者出入姓名用户单击“确定”按钮,可以保存成绩(2)方法actionPerformed(ActionEvent)方法是Record类实现的ActionListener接口中的方法,当用户单击“确定”按钮后,该方法被执行,所执行的操作就是获取用户输入的名字和用时,然后调用writeRecord(String,String)方法将信息写入英雄榜中writeRecord(String,String)负责将有关信息写入“英雄榜”文件。(3)实现importjava.io.*;importjava.util.*;importjavax.swing.*;importjava.awt.event.*;importjava.awt.*;publicclassRecordextendsJDialogimplementsActionListener{publicvoidsetGrade(Stringgrade){………}publicvoidsetTime(inttime){………}publicvoidactionPerformed(ActionEvente){………}publicvoidwriteRecord(St
本文标题:java扫雷游戏的开发
链接地址:https://www.777doc.com/doc-2878687 .html