东华理工大学长江学院课程设计报告 封面
Java 课程设计
题目:扫雷游戏
姓名: 学号:
指导老师 : 黄国辉
设计时间:20xx年4月
1
东华理工大学长江学院课程设计报告 摘要 摘要
在今天,游戏日益快速更新的情况下,相信大家对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 系统结构分析
根据系统的功能分析,可得系统系统总体的功能结构图,如下:
图2.1-1系统结构图
2.2 系统流程分析
2.2.1 系统流程描述
◆ 游戏初始页面为初级的游戏界面
◆ 点击开始便可开始扫雷
◆ 点击方块,系统判断是否点中了雷
◆ 点击开始可重新开始游戏
◆ 菜单中有“初级”、“中级”、“高级”三个级别可供选择
2.2.2 系统流程图
系统流程图如下:
5
东华理工大学长江学院课程设计报告
N
图2.2-1系统流程图
2.3 系统模块设计
2.3.1 模块一:随机布雷与初始化界面
模块负责人 姓名: 学号:
1. 模块的主要任务
◆ 利用产生随机数的方法完成游戏中随机布雷的要求
◆ 初始化菜单,包括了游戏的三个不同级别
6
东华理工大学长江学院课程设计报告
2. 界面的截图部分源代码
游戏的初始界面截图如下:
图 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]++;
}
}
}
}
游戏的菜单界面截图如下:
图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. 界面的截图和部分源代码
初级游戏界面截图如下:
图2.3.2-1 初级游戏界面
10
东华理工大学长江学院课程设计报告 中极游戏界面截图如下:
图2.3.2-2 中级游戏界面
高级游戏界面截图如下:
图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秒,在时间的旁边的文本框内显示的信息是游戏者的输赢情况。
截图如下:
图2.3.3-1 中级游戏胜利的截图
14
东华理工大学长江学院课程设计报告 “*o*”符号表示你标错雷的位置,初级游戏失败后的截图如下:
图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
东华理工大学长江学院课程设计报告
东华理工学院长江学院
课程设计评分表
课程设计题目:扫雷游戏
19
河北科技大学课程设计报告学生姓名:##学号:专业班级:计算机科学与技术课程名称:基于classifier4j的文本分类学年学期:2…
Java程序设计课程设计报告20xx20xx年度第1学期Hannio塔专业学生姓名班级学号指导教师完成日期计算机科学技术网络工程马…
安阳工学院计算机学院JAVA课程设计报告蜘蛛纸牌游戏专业班级09级网络工程2班学生姓名李瑞琳学生学号20xx03060016小组成…
黄淮学院JAVA课程设计报告题目:《日记本的设计与实现》课程设计学院:信息工程学院姓名:学号:专业:软件工程班级:软工1101B班…
java程序设计与应用开发Java课程设计报告书题目学籍管理系统班级数媒学号姓名教师20xx年12月24日1java程序设计与应用…
黄淮学院JAVA课程设计报告题目:《日记本的设计与实现》课程设计学院:信息工程学院姓名:学号:专业:软件工程班级:软工1101B班…
Java程序设计课程设计报告20xx20xx年度第1学期Hannio塔专业学生姓名班级学号指导教师完成日期计算机科学技术网络工程马…
河南机电高等专科学校学生课程设计报告实验课程名称Java程序设计开课实验室实验楼308机房系、部计科系年级11专业班软件技术学生姓…
Java课程设计报告课目计算器学院基础学院班级光信息20xx1学生指导教师丁振凡张晓瑞辅导教师江宇完成时间20xx年7月1日课程设…
Java语言程序设计综合实验报告系别计算机科学与技术系学科专业信息管理与信息系统课题题目qq聊天系统人员及分工白娟20xx1006…
java程序设计与应用开发Java课程设计报告书题目学籍管理系统班级数媒学号姓名教师20xx年12月24日1java程序设计与应用…