Java扫雷游戏课程设计实训报告.docx

上传人:b****1 文档编号:30625 上传时间:2022-10-01 格式:DOCX 页数:21 大小:72.20KB
下载 相关 举报
Java扫雷游戏课程设计实训报告.docx_第1页
第1页 / 共21页
Java扫雷游戏课程设计实训报告.docx_第2页
第2页 / 共21页
Java扫雷游戏课程设计实训报告.docx_第3页
第3页 / 共21页
Java扫雷游戏课程设计实训报告.docx_第4页
第4页 / 共21页
Java扫雷游戏课程设计实训报告.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

Java扫雷游戏课程设计实训报告.docx

《Java扫雷游戏课程设计实训报告.docx》由会员分享,可在线阅读,更多相关《Java扫雷游戏课程设计实训报告.docx(21页珍藏版)》请在冰豆网上搜索。

Java扫雷游戏课程设计实训报告.docx

Java扫雷游戏课程设计实训报告

一.总体设计

本系统共包括3个java源文件和4个图像文件。

1.类之间的关系如图1.1所示。

2.java源文件及其功能如表1所示。

表1源文件及其功能

序号

文件名

主要功能

1

Main.java

生成的类负责创建程序窗口,含有main方法,游戏从该类开始执行。

2

MainBomb.java

为主类创建整个挖雷游戏的对象,包括窗口,布雷,判断等等。

3

Bomb.java

负责创建游戏所需要的按钮。

3.图像文件

Bomb.gif:

地雷方块上的图标。

question.gif:

疑惑探雷是否正确。

bomb_big.gif:

触雷时方块上的图标。

flag.gif:

探雷标记。

 

二、详细设计

1.主类Main

(1)成员变量(见表2)

表2

成员变量描述

变量类型

备注

游戏运行

MainBomb

临时变量

(2)成员变量(见表3)

表3

名称

功能

备注

main

游戏开始

 

(3)源代码见文件Main.java

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

/*主类*/

publicclassMain

{

publicstaticvoidmain(Stringargs[])

{

(newMainBomb()).show();

}

}

2.挖雷游戏MainBomb

(1)成员变量(见表4)

表4

成员变量描述

变量类型

名称

雷数设置

JTextField

text

当前方块数

int

BlockNum

当前雷数

int

BombNum

开始

JButton

start

踩雷

Icon

icon_bomb

踩雷标记

Icon

icon_bomb_big

雷标记

Icon

icon_flag

疑惑是否有雷

Icon

icon_question

目录面板

Panel

MenuPamel

主面板

Panel

mainPanel

Bomb[][]

bombButton

该方块是否有雷

boolean

周围无雷

方块周围的雷数

int

周围的雷数

方块上的雷标记

int

探雷标记

显示方块信息

JLabel

Label

方块在雷区的位置

Point

P

布雷

RandomSet

set

判断标记是否正确

Determine

Determine

是否获得胜利

Winner

Win

雷标数目

int

count

周围方块的雷数

int

count1

 

(2)方法见(表5)

表5

方法名

功能

备注

Game

创建程序窗口

bar

newGame

新开局

actionPerformed

处理ActionEvent事件

接口方法

设置方块是否有雷

设置雷的值

设置是雷时的图标

设置label上的图标

设置无雷时的图标

设置label上的图标

设置有雷时的名字

设置label上的文字

设置周围的雷数

设置周围的雷数

获取名字

返回方块label上的文字

获取周围雷数

返回周围的雷数

设置雷区位置

设置属性P

获取雷区位置

返回属性P

获取探雷标记

返回探雷标记

mousePressed

处理鼠标按下事件

接口方法

mouseClicked

处理鼠标双击事件

接口方法

mouseReleased

处理鼠标释放事件

接口方法

mouseExited

处理鼠标退出事件

接口方法

mouseEntered

处理鼠标进入事件

接口方法

MinesSquare

创建雷区

gameOver

游戏失败

判断雷标是否正确

正确返回true错误返回false

布雷

随机布雷

判断是否成功

成功返回true失败返回false

 

(3)源代码见文件MainBomb.java

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

/*窗口及算法实现类*/

classMainBombextendsJFrameimplementsActionListener,MouseListener

{

publicJTextFieldtext;

publicLabelnowBomb,setBomb;

publicintBlockNum,BombNum;

//当前方块数当前雷数

publicIconicon_bomb=newImageIcon("Bomb.gif");

//踩雷

publicIconicon_bomb_big=newImageIcon("bomb_big.gif");

//踩雷标记

publicIconicon_flag=newImageIcon("flag.gif");

//雷标记

publicIconicon_question=newImageIcon("question.gif");

//疑惑是否有雷

publicJButtonstart=newJButton("开始");

publicPanelMenuPamel=newPanel();

publicPanelmainPanel=newPanel();

publicBomb[][]bombButton;

/*界面设计*/

publicMainBomb()

{

super("成型04-2李超JAVA课程设计");

BlockNum=64;

BombNum=10;

Containerc=getContentPane();

c.setBackground(Color.gray);

c.setLayout(newBorderLayout());

text=newJTextField("10",3);

nowBomb=newLabel("当前雷数"+""+BombNum+"");

setBomb=newLabel("设置地雷数");

start.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente)

{

BombNum=Integer.parseInt(text.getText().trim());

if(BombNum>=10&&BombNum<50)

replay();

else

{

JOptionPanemsg=newJOptionPane();

JOptionPane.showMessageDialog(null,"您设置的地雷数太多了,请重设!

","错误",2);

}

}

});

MenuPamel.add(setBomb);

MenuPamel.add(text);

MenuPamel.add(start);

MenuPamel.add(nowBomb);

c.add(MenuPamel,"North");

mainPanel.setLayout(newGridLayout((int)Math.sqrt(BlockNum),(int)Math.sqrt(BlockNum)));

bombButton=newBomb[(int)Math.sqrt(BlockNum)][];

for(inti=0;i<(int)Math.sqrt(BlockNum);i++)

{

bombButton[i]=newBomb[(int)Math.sqrt(BlockNum)];

}

for(inti=0;i<(int)Math.sqrt(BlockNum);i++)

for(intj=0;j<(int)Math.sqrt(BlockNum);j++)

{

bombButton[i][j]=newBomb(i,j);

bombButton[i][j].setForeground(Color.gray);

bombButton[i][j].addActionListener(this);

bombButton[i][j].addMouseListener(this);

}

for(inti=0;i<(int)Math.sqrt(BlockNum);i++)

for(intj=0;j<(int)Math.sqrt(BlockNum);j++)

mainPanel.add(bombButton[i][j]);

c.add(mainPanel,"Center");

startBomb();

setSize(400,400);

setLocation(350,200);

setResizable(false);

}

/*布雷*/

publicvoidstartBomb()

{

for(inti=0;i

{

intx=(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1));

inty=(int)(Math.random()*(int)(Math.sqrt(BlockNum)-1));

if(bombButton[x][y].isBomb==true)

i--;

else

bombButton[x][y].isBomb=true;

}

}

/*重新开始*/

publicvoidreplay()

{

nowBomb.setText("当前雷数"+""+BombNum+"");

for(inti=0;i<(int)Math.sqrt(BlockNum);i++)

for(intj=0;j<(int)Math.sqrt(BlockNum);j++)

{

bombButton[i][j].isBomb=false;

bombButton[i][j].isClicked=false;

bombButton[i][j].setEnabled(true);

bombButton[i][j].setText("");

bombButton[i][j].setIcon(null);

}

startBomb();

}

/*是否挖完了所有的雷*/

publicvoidisWin()

{

intfindBomb=0;//找到的地雷数

for(inti=0;i<(int)Math.sqr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

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

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