Java 课程设计报告 扫雷游戏

东华理工大学长江学院课程设计报告 封面

Java 课程设计

题目:扫雷游戏

姓名: 学号:

指导老师 : 黄国辉

设计时间:20xx年4月

1

Java课程设计报告扫雷游戏

东华理工大学长江学院课程设计报告 摘要 摘要

在今天,游戏日益快速更新的情况下,相信大家对Windows 2000/XP系统提供的扫雷游戏或多或少都有所了解。闲暇时刻,玩玩扫雷游戏,不但有利于提高自己快速反应的能力,还有助于减舒缓压力,它是一款简单而有趣的游戏,本次课程设计就是要完成由Java设计的一个简单扫雷游戏。

Abstract:

Nowadays,the game has been undated quickly, believer that everyone know more or less about the Windows 2000/XP system provides the MineSweeper game . Leisure time, play the game, not only help us to improve our own rapid of reaction capability, and helps reduce stress, it is a simple and interesting games, the curriculum design is to be completed by the java design of a simple game of mine clearance.

2

东华理工大学长江学院课程设计报告 目录

目 录

一 需求分析.................................................................................................................. 4

1.1设计背景......................................................................................................... 4

1.2可行性分析..................................................................................................... 4

1.3功能分析......................................................................................................... 4

二 总体设计.................................................................................................................. 5

2.1 系统结构分析................................................................................................ 5

2.2 系统流程分析.............................................................................................. 5

2.2.1 系统流程描述.................................................................................... 5

2.2.2 系统流程图........................................................................................ 5

2.3 系统模块设计................................................................................................ 6

2.3.1 模块一:随机布雷与初始化界面.................................................... 6

2.3.2 模块二:游戏各级别的选择与设计.............................................. 10

2.3.3 模块三:判断所点击的是否为雷.................................................. 13

3. 小结........................................................................................................................ 18

东华理工学院长江学院课程设计评分表.................................................................. 19

3

东华理工大学长江学院课程设计报告 需求分析

一 需求分析

1.1设计背景

随着社会的不断进步,人们所承受的压力不断上升,在游戏层出不穷的时刻,扫雷游戏仍受到不少人的青睐,其本身的性质,决定了人们对它的喜爱程度,不需要特殊的技巧,不需要不断地升级,不需要太多的时间进行初步的熟悉,简简单单却乐趣无穷。

1.2可行性分析

◆ 适用于各种群体,学生、老师、白领......

◆ 简单却有效地舒缓压力,消磨闲暇时光

◆ 一局所需的时间很短,低级的只需十多秒

1.3功能分析

◆ 随机布雷

◆ 可以选择相应的等级

◆ 显示一局完成的时间

◆ 判断错误时,待游戏结束时会有不同标记

4

东华理工大学长江学院课程设计报告

二 总体设计

2.1 系统结构分析

根据系统的功能分析,可得系统系统总体的功能结构图,如下:

Java课程设计报告扫雷游戏

图2.1-1系统结构图

2.2 系统流程分析

2.2.1 系统流程描述

◆ 游戏初始页面为初级的游戏界面

◆ 点击开始便可开始扫雷

◆ 点击方块,系统判断是否点中了雷

◆ 点击开始可重新开始游戏

◆ 菜单中有“初级”、“中级”、“高级”三个级别可供选择

2.2.2 系统流程图

系统流程图如下:

5

东华理工大学长江学院课程设计报告

N

图2.2-1系统流程图

2.3 系统模块设计

2.3.1 模块一:随机布雷与初始化界面

模块负责人 姓名: 学号:

1. 模块的主要任务

◆ 利用产生随机数的方法完成游戏中随机布雷的要求

◆ 初始化菜单,包括了游戏的三个不同级别

6

Java课程设计报告扫雷游戏

东华理工大学长江学院课程设计报告

2. 界面的截图部分源代码

游戏的初始界面截图如下:

Java课程设计报告扫雷游戏

图 2.3.1-1 初始界面

页面初始化的源代码:

//产生随机数

for(int i=0;i<bon;i++)

{ int p=1;

int m=(int)(Math.random()*row*col);

while(p==1)

{ int l=1, int j;

for( j=0;j<i&&l==1;j++)

{ if(a1[j]==m)

{ m=(int)(Math.random()*row*col);

l=0;

}

}

if(j==i)

{ a1[i]=m;

p=0;

}

}

}

b1.setText(bon+"");

b2.setText("0");

//布雷

7

东华理工大学长江学院课程设计报告 for(int i=0;i<bon;i++)

{ int x=(a1[i]/col+1);

int y=(a1[i]%col+1);

a[x][y]=100;

}

for(int i=0;i<row+2;i++)

{ for(int j=0;j<col+2;j++)

{ if(i==0||j==0||i==row+1||j==col+1)

{ a[i][j]=0;

}

}

}

for(int i=1;i<=row;i++)

{ for(int j=1;j<=col;j++)

{ if(a[i][j]!=100)

{ for(int l=j-1;l<=j+1;l++)

{ if(a[i-1][l]==100)

{ a[i][j]++;

}

if(a[i+1][l]==100)

{ a[i][j]++;

}

}

if(a[i][j-1]==100)

{ a[i][j]++;

}

if(a[i][j+1]==100)

{ a[i][j]++;

}

}

}

}

游戏的菜单界面截图如下:

Java课程设计报告扫雷游戏

图2.3.1-2 游戏菜单界面

8

东华理工大学长江学院课程设计报告 菜单页面设置部分代码:

public void initGUI()

{ p3=new JPanel();

b=bon;

JMenuBar menuBar=new JMenuBar();

JMenu menu1=new JMenu("游戏");

JMenu menu2=new JMenu("帮助");

JMenuItem mi1=new JMenuItem("初级");

JMenuItem mi2 = new JMenuItem("中级");

JMenuItem mi3 =new JMenuItem("高级");

mi1.addActionListener(this);

menu1.add(mi1);

mi2.addActionListener(this);

menu1.add(mi2);

mi3.addActionListener(this);

menu1.add(mi3);

menuBar.add(menu1);

menuBar.add(menu2);

p3.add(menuBar);

b1=new JLabel(bon+"");

a1=new int[bon];

btn =new JButton("开始");

btn.addActionListener(this);

b2=new JLabel("0");

b3=new JLabel("");

btns=new JButton[row*col];

p=new JPanel();

p.setLayout(new BorderLayout());

contentPane.add(p);

p.add(p3,BorderLayout.NORTH);

p1=new JPanel();

p1.add(b1);

p1.add(btn);

p1.add(b2);

p1.add(b3);

p.add(p3,BorderLayout.NORTH);

p.add(p1,BorderLayout.CENTER);

p2=new JPanel();

p2.setLayout(new GridLayout(row,col,0,0));

for(int i=0;i<row*col;i++)

{ btns[i]=new JButton("");

btns[i].setMargin(new Insets(0,0,0,0));

btns[i].setFont(new Font(null,Font.BOLD,25));

btns[i].addActionListener(this);

9

东华理工大学长江学院课程设计报告

} btns[i].addMouseListener(new NormoreMouseEvent()); p2.add(btns[i]); } contentPane.add(p,BorderLayout.NORTH); contentPane.add(p2,BorderLayout.CENTER);

2.3.2 模块二:游戏各级别的选择与设计

模块负责人 姓名: 学号:

1. 模块主要任务

◆ 选择相应级别候,出现相应雷数的游戏界面

◆ 多各个界别的方块大小,界面大小进行设置

2. 界面的截图和部分源代码

初级游戏界面截图如下:

Java课程设计报告扫雷游戏

图2.3.2-1 初级游戏界面

10

东华理工大学长江学院课程设计报告 中极游戏界面截图如下:

Java课程设计报告扫雷游戏

图2.3.2-2 中级游戏界面

高级游戏界面截图如下:

Java课程设计报告扫雷游戏

图2.3.2-3 高级游戏界面

11

东华理工大学长江学院课程设计报告 各级别游戏界面设计的源代码:

if(e.getActionCommand()=="初级")

{ row=9;

col=9;

bon=10;

a1=new int[bon];

b=bon;

a = new int[row+2][col+2];

this.remove(p2);

timer.stop();

b1.setText("10");

b2.setText("0");

b3.setText("");

btns=new JButton[row*col];

p2=new JPanel();

p2.setLayout(new GridLayout(row,col,0,0));

for(int i=0;i<row*col;i++)

{ btns[i]=new JButton(" ");

btns[i].setMargin(new Insets(0,0,0,0));

btns[i].setFont(new Font(null,Font.BOLD,25));

btns[i].addActionListener(this);

btns[i].addMouseListener(new NormoreMouseEvent());

p2.add(btns[i]);

}

}

else if(e.getActionCommand()=="中级")

{ row=16;

col=16;

bon=40;

a1=new int[bon];

a = new int[row+2][col+2];

b=bon;

this.remove(p2);

timer.stop();

b1.setText("40");

b2.setText("0");

b3.setText("");

btns=new JButton[row*col];

p2=new JPanel();

p2.setLayout(new GridLayout(row,col,0,0));

for(int i=0;i<row*col;i++);

{ btns[i]=new JButton(" ");

btns[i].setMargin(new Insets(0,0,0,0));

btns[i].setFont(new Font(null,Font.BOLD,25));

12

东华理工大学长江学院课程设计报告 btns[i].addActionListener(this);

btns[i].addMouseListener(new NormoreMouseEvent());

p2.add(btns[i]);

}

}

else if(e.getActionCommand()=="高级")

{ row=16;

col=32;

bon=99;

setSize(33*col,33*row+80);

a1=new int[bon];

a = new int[row+2][col+2];

b=bon;

this.remove(p2);

timer.stop();

b1.setText("99");

b2.setText("0");

b3.setText("");

btns=new JButton[row*col];

p2=new JPanel();

p2.setLayout(new GridLayout(row,col,0,0));

for(int i=0;i<row*col;i++)

{ btns[i]=new JButton(" ");

btns[i].setMargin(new Insets(0,0,0,0));

btns[i].setFont(new Font(null,Font.BOLD,25));

btns[i].addActionListener(this);

btns[i].addMouseListener(new NormoreMouseEvent());

p2.add(btns[i]);

}

2.3.3 模块三:判断所点击的是否为雷

模块负责人 姓名: 学号:

1. 模块任务

◆ 对雷的形状颜色进行设定

◆ 判断是否点击到雷,游戏胜利或输了的情况设置

13

东华理工大学长江学院课程设计报告

2. 游戏中的截图和源代码

中级游戏胜利后的截图,有红色圆圈标记的方块为雷区,在开始按钮的作则的数字“0”表示剩下雷的数目为0,其右侧的数据“111”表示游戏者在完成该局游戏所花的时间为111秒,在时间的旁边的文本框内显示的信息是游戏者的输赢情况。

截图如下:

Java课程设计报告扫雷游戏

图2.3.3-1 中级游戏胜利的截图

14

东华理工大学长江学院课程设计报告 “*o*”符号表示你标错雷的位置,初级游戏失败后的截图如下:

Java课程设计报告扫雷游戏

图2.3.3-2 游戏截图

程序部分代码:

for(int i=0;i<col*row;i++)

{ if(btns[i].getText()!="●")

{ btns[i].setForeground(Color.red);

int x=i/col+1;

int y=i%col+1;

if(e.getSource()==btns[i]&&a[x][y]==100)

{ btns[i].setText("●");

btns[i].setEnabled(false);

a[x][y]=10;

for(int k=0;k<col*row;k++)

{ int m1=k/col+1;

int n1=k%col+1;

if(a[m1][n1]!=10&&btns[k].getText()=="●")

{ btns[k].setText("*o*");

}

}

for(int j=0;j<col*row;j++)

{ int m=j/col+1;

int n=j%col+1;

if(a[m][n]==100)

{ btns[j].setText("●");

btns[j].setEnabled(false);

b3.setText("你输了 !!");

15

东华理工大学长江学院课程设计报告 }

btns[j].setEnabled(false);

a[m][n]=10;

}

timer.stop();

}

else if(e.getSource()==btns[i])

{ if(a[x][y]==0)

{ out(a,btns,e,i,x,y);

a[x][y]=10;

btns[i].setEnabled(false);

}

if(a[x][y]!=0&&a[x][y]!=10)

{ btns[i].setText(a[x][y]+"");

btns[i].setEnabled(false);

a[x][y]=10;

}

}

}

class NormoreMouseEvent extends MouseAdapter

{ public void mouseClicked(MouseEvent e)

{ System.out.println(b);

for(int i=0;i<col*row;i++)

{ int x1=i/col+1;

int y1=i%col+1;

if(e.getSource()==btns[i]&&btns[i].getText()!="●"&&a[x1][y1]!=10)

{ if(e.getButton()==MouseEvent.BUTTON3)

{ btns[i].setText("●");

b--;

if(b==0)

{ int flag=0;

for(int j=0;j<col*row;j++)

{ int x=j/col+1;

int y=j%col+1;

if(a[x][y]==100&&btns[j].getText()=="●")

{ flag++;

}

}

}

if(flag==bon)

{ timer.stop();

b3.setText("你赢了!");

}

}

16

东华理工大学长江学院课程设计报告 b1.setText(b+"");

}

}

else if(e.getSource()==btns[i]&&btns[i].getText()=="●"&&a[x1][y1]!=-1)

{ if(e.getButton()==MouseEvent.BUTTON3)

{ btns[i].setText("");

b++;

if(b>bon)

{ b1.setText(bon+"");

}

else

{ b1.setText(b+"");

}

btns[i].setEnabled(true);

}

}

17

东华理工大学长江学院课程设计报告

3. 小结

这个扫雷游戏大大简化了微软系统自带的扫雷游戏的功能,所以难度是比较小,经过编写这个扫雷游戏,我们认识到应该注意细节问题,从小问的修改发现中,提高自己编程的能力,而且还可以培养自己编程的严谨性,同时还可以为以后的编程积累经验。

编写完这个扫雷游戏,我们发现自己有很多的不足,所以小组的形式给我们的编程带来了很大的帮助,这样发现问题的时候大家一起想办法,解决问题的速达大大提高了,这让我们认识到了团结协作的重要性。

18

东华理工大学长江学院课程设计报告

东华理工学院长江学院

课程设计评分表

课程设计题目:扫雷游戏

Java课程设计报告扫雷游戏

19

相关推荐