java扫雷游戏的开发

更新时间:2023-08-10 18:01:01 阅读量: 工程科技 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

扫雷游戏的开发 JAVA 软件工程

1设计题目及具体要求 设计题目:扫雷游戏的开发

题目需求:玩者进入游戏后,开始游戏,目的是为了找出所有隐藏的小方格

后一定数目地雷,进行标记,把所有地雷找出并用时最少的胜利者进出扫雷英雄榜。单击游戏菜单可以选择<初级>,<高级>,<中级>和<扫雷英雄榜>。扫雷的各个级别是根据游戏的总格子数和地雷总数来区别的,初级的总格子数最少,地雷数也最少,高级的总格子数和地雷数最多。扫雷英雄榜中记录着各个级别的第一名玩家,而且玩家可以刷新纪录。游戏上方可以显示这盘中还有多少颗地雷,还可以显示在这盘游戏中游戏进行了多长时间。

选择级别后游戏去会出现相应的扫雷区域,这是玩家用鼠标单击任意一个方格,开始计时及游戏开始。

玩家要揭开某个方块可单击它,若该方块不是雷,会显示出一个数字或者是一个空格子这表示一概方格为中心周围的把各方格子中总共有多少颗地雷,玩家需要进行判断继续游戏,若是地雷则玩家输了这盘游戏,这时玩家可以退出游戏或选择重新开始。

若玩家确定某个方格子底下是地雷,这是可以单击鼠标右键,不管是不是正确,这时会出现一个小旗子标志,同时剩余地雷数减一个。

游戏胜利后,系统会弹出对话框保存成绩可以记录胜利者的名字。

实现环境及工具简介

系统开发平台:Eclipse1.7 数据库管理系统软件:Oracle 运行平台:windows XP Java开发包:jdk7.0

2总体设计

总体设计:再设计扫雷游戏时,需要编写7个源文件:MineGame.java,

MineArea.java,Block.java,BlockView.java,LayMines.java,ShowRecord.java,Record.java 除了这七个源文件外,还需要Java系统提供一些重要的类,如File,JButton和JLabel等类。

扫雷游戏的开发 JAVA 软件工程

2.1 MineGame.java(主类):主要负责创建扫雷游戏主窗口,该文件有

main方法,扫雷游戏从该类开始执行。MineGame类主要有三种类型的成员:File,MineArea和ShowRecord对象。

2.2 MineArea.java:表示扫雷区域。该类的成员变量主要有四个,分别是:

Block,BlockView,LayMines。

2.3 Block.java :雷区“方块”的封装,含有关于方块属性以及操作。 2.4 BlockView.java:为Block对象提供视图,如果是雷,则显示雷的图标,

如果不是雷,则显示他周围的雷的总数

2.5 LayMines.java:使用随机算法指定MineArea对象中的那些是雷,那些

不是雷

2.6 Record.java: 扫雷成功时,用于保存用户的成绩到文件

2.7 ShowRecord:当用户查看扫雷最好成绩时,用于提供读取文件数据的

界面

3 详细设计与实现

3.1 MineGame.java(主类):

(1)成员变量

bar和fileMenu 提供菜单操作,单击菜单操作中的选项为“初级”,“中级”,“高级”

或“扫雷英雄榜”

mineArea 是扫雷区域,提供有关雷的主要功能 “英雄榜” 负责存放三个级别的扫雷最好成绩 showHeroRecord负责显示英雄榜中的数据

扫雷游戏的开发 JAVA 软件工程

MineGame()是构造窗口,负责完成窗口的初始化。

ActionPerformed(ActionEvent)方法是MineGame类实现的ActionListener接口中的方法,该方法负责执行菜单发出的有关命令。用户选择菜单中的菜单项可触发ActionEvent事件,导致actionPerformed(ActionEvent)方法执行相应的操作。 Main(String[])方法是程序运行的入口方法。 (3) 实现

import java.awt.event.*; import java.awt.*; import javax.swing.*;

import javax.swing.border.*; import java.util.*; import java.io.*;

public class MineGame extends JFrame implements ActionListener{

………

public void actionPerformed(ActionEvent e){ ……… }

public static void main(String args[]){ new MineGame(); ……… }

3.2 MineArea.java:

(1)成员变量

block和Block类型的数组,用来确定雷区有多少需进行扫雷的方块 blockView是BlockView类型的数组,负责block数组中Block对象提供视图

lay是LayMines类型的对象,负责设置block数组中的哪些方块不是雷 record负责提供保存成绩的界面,是一个对话框,默认为不可见。用户只有扫雷成功后,才可以看见该对话框

reStart是一个按钮对象,用户单击它重新开始游戏 time是计时器对象,负责计算用户用时。

扫雷游戏的开发 JAVA 软件工程

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)实现

import java.awt.*; import java.awt.event.*; import javax.swing.*;

public class MineArea extends JPanel implements ActionListener,MouseListener{

public MineArea(int row,int colum,int mineCount,int grade) { ………} public void initMineArea(int row,int colum,int mineCount,int grade){ ……… }

public void setRow(int row){ ………} public void setColum(int colum){ ………}

public void setMineCount(int mineCount){ ………} public void setGrade(int grade) { ………}

public void actionPerformed(ActionEvent e) { ………} public void show(int m,int n) { ………}

public void mousePressed(MouseEvent e){ ………} public void inquireWin(){………}

public void mouseReleased(MouseEvent e){} public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){}

扫雷游戏的开发 JAVA 软件工程

public void mouseClicked(MouseEvent e){} }

3.3 Block.java :

(1)成员变量 name方块上的名字

aroundMineNumber是方块周围雷的数目 mineIcon是方块上雷的图标 isMine用来表示方块是否是雷 isMark用来表示方块是否被标记 isOpen用来表示方块是否被挖开 (2)方法

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

getAroundMineNumber()方法用来获取aroundMineNumber的值 (3) 实现

import javax.swing.ImageIcon; public class Block {

public void setName(String name) { ……… } public void setAroundMineNumber(int n) { ………} public int getAroundMineNumber() { ………} public String getName() { ………} public boolean isMine() { ………}

public void setIsMine(boolean b) { ………} public void setMineIcon(ImageIcon icon){ ………} public ImageIcon getMineicon(){………} public boolean getIsOpen() { ………} public void setIsOpen(boolean p) { ………} public boolean getIsMark() { ………} public void setIsMark(boolean m) { ………} }

3.4 BlockView.java:

(1)成员变量

blockNameOrIcon用来显示Block对象的name,number和mineIcon属性

扫雷游戏的开发 JAVA 软件工程

blockCover用来遮挡blockNameOrIcon card卡片式布局 (2)方法

giveView(Block block)方法给参数指定的Block对象提供视图 seeBlockNameOrIcon()方法让用户看见视图中的标签,无法看见按钮 seeBlockCover()方法让用户看见视图中的按钮,无法看见标签 (3) 实现

import javax.swing.*; import java.awt.*;

public class BlockView extends JPanel{ public void giveView(Block block){ ………} public void seeBlockNameOrIcon(){………} public void seeBlockCover(){………}

public JButton getBlockCover(){………} }

3.5 LayMines.java:

(1)成员变量

mineIcon用来存放一个格式为gif的图像 (2)方法

layMinesForBlock(Block[][],int)方法对参数指定的Block数组进行设置,其中int参数指定雷的数目 (3) 实现

import java.util.*; import javax.swing.*; public class LayMines{

public void layMinesForBlock(Block block[][],int mineCount){ ………} }

3.6 Record.java:

(1)成员变量

textName提供用户扫雷优胜者出入姓名 用户单击“确定”按钮,可以保存成绩 (2)方法

actionPerformed(ActionEvent)方法是Record类实现的ActionListener接口中

扫雷游戏的开发 JAVA 软件工程

的方法,当用户单击“确定”按钮后,该方法被执行,所执行的操作就是获取用户输入的名字和用时,然后调用writeRecord(String,String)方法将信息写入英雄榜中

writeRecord(String,String)负责将有关信息写入“英雄榜”文件。 (3) 实现

import java.io.*; import java.util.*; import javax.swing.*; import java.awt.event.*; import

public classextends JDialog implements ActionListener{ }

public void setGrade(String grade){ ………} public void setTime(int time){ ………}

public void actionPerformed(ActionEvent e){ ………}

public void writeRecord(String key,String message){ ………}

3.7 ShowRecord:

(1)成员变量 file存放文件的引用

用户单击“显示成绩”按钮,可以查看各个级别的最好成绩

用户单击“重新计分”按钮,可以将“英雄榜”中的成绩恢复为初始值 (2)方法

actionPerformed(ActionEvent)方法是ShowRecord类实现的ActionListener接口中的方法,当用户单击“显示成绩”按钮后,该方法被执行,所执行的操作就是调用readAndShow()方法

readAndShow()方法负责读取存放在文件中的各个级别的扫雷最好成绩以及扫雷者姓名,并显示这些相关信息 (3) 实现

import java.io.*; import java.util.*; import javax.swing.*; import java.awt.event.*; import java.awt.*;

扫雷游戏的开发 JAVA 软件工程

public class

extends JDialog implements ActionListener{ public ShowRecord(JFrame frame,Hashtable h) { ………} public void readAndShow(){………}

public void actionPerformed(ActionEvent e) { ………} }

4 系统测试

5 设计小结

我课程设计选这个题目原因是我一直比较喜欢这个游戏,对这款游戏的操作以及玩法度比较了解,所以做起来比较容易点,同时我也想玩玩自己亲手做出这个小游戏,所以选了这个题目,扫雷游戏是一款智力游戏,这款游戏将一定的地雷分布在小格子里,最终胜利是玩家将所有的地雷都找出。Java是我们这个学期新学的语言,通过这个课程设计,我对以前学的知识有了更深一步的了解,这次设计的时间有限,所以我做了一个自己比较喜欢的小游戏,刚开始做时,虽然知道主要思想但把它要表示出来真的很不容易,通过查资料,请教同学,上网,知道了知识可能是自己一个人要花很长时间知道的,经过这段时间的努力,终于做出了这款游戏,虽然还有很多不足,但做出来后还是很开心的,测试这个游戏的功能时,感觉很不错,通过这个课程设计我对以前java有了一个更深一步的认识。所以这次的设计相对来说还是很成功的。

扫雷游戏的开发 JAVA 软件工程

参考文献

[1]《Java程序设计教程》第二版 主编:雍俊海 清华大学出版社 [2]《软件工程导论》第五版 主编:张海藩 清华大学出版社

[3]《Java程序设计实验指导与案例习题解答》主编:刘宝林 清华大学出版社 [4]《Java程序设计案例教程》主编:刘志都、赵建超 武汉大学出版社

[5]《Java编程基础、实力与进阶》主编:王勇、代桂平、方娟、毛国君 清华大学出版社 [6]《Java程序设计》主编:周晓媛、张晓燕 西安科技大学

[7]《Java程序设计教程》第六版 主编:John Lewis、William Loftus 电子工业出

本文来源:https://www.bwwdw.com/article/frqj.html

Top