java扫雷小游戏软件设计报告Word格式.docx
- 文档编号:7943651
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:68
- 大小:133.79KB
java扫雷小游戏软件设计报告Word格式.docx
《java扫雷小游戏软件设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《java扫雷小游戏软件设计报告Word格式.docx(68页珍藏版)》请在冰点文库上搜索。
5.2程序异常处理………………………………………………………………9
6.源程序……………………………………………………………………………9
参考文献……………………………………………………………………………27
设计总结……………………………………………………………………………27
摘要:
该程序是一个扫雷的小游戏,具有赶紧简洁的游戏界面,玩者只要是曾经玩过扫雷的游戏,那么我这个游戏是很容易上手的。
该游戏具有三种模式:
简单模式,中等模式以及复杂模式。
游戏界面上有一个显示剩余雷数目的小方框,还有一个计时的小方框。
中间是一个“重新玩的按钮”,选择菜单栏有重新玩、可以选择模式、还能退出。
关键字:
java扫雷,游戏类,方法,事件
1前言
学生的学习压力越来越大,应当有适时的娱乐放松,,所以我在学习了java语言之后,决定用java语言编写一个简单的扫雷小游戏,可以实现简单的娱乐功能,且比普通的扫雷游戏增加一些功能。
Java是由Sun公司开发的新一代纯面向对象的网络编程语言。
其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。
正因为如此,Java已成为当今Internet上最流行、最受欢送的一种程序开发语言。
Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。
Java基本版本叫Java2标准版〔Java2StandardEdition,J2SE〕,它包含建立Java应用程序或者是Applet所需的应用程序编程接口〔API〕。
Java2移动版〔TheJava2MobileEdition,J2ME〕包含创建无线Java应用程序的API。
还有Java2企业版〔TheJava2Enterprise,J2EE〕是J2SE的增强版本,包含建立多层架构应用程序API。
Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。
作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。
Java语言去掉了C++语言的一些容易引起错误的特性。
Java语言的特点有:
面向对象、跨平台、安全性、多线程和图形功能强。
2概要设计
开发环境
开发平台:
MicrosoftWindowsXPProfessionalServicePack2
开发工具:
JBuilder2007+JDK_02
游戏功能
功能1:
打开游戏之后,会默认进入疯狂模式,可以通过菜单栏选择不同的游戏模式。
功能2:
游戏界面的左边有个小框,用来显示当前界面剩余雷的数目。
功能3:
游戏界面的右边有一个小框,用来显示当前游戏已经进行了的时间〔秒〕。
功能4:
游戏界面的中间有一个按钮,点击可以重新开始游戏。
功能5:
菜单栏的二级菜单有选项可以退出游戏。
图游戏面板〔疯狂模式〕
图游戏面板〔中等模式〕
图2.3.3游戏面板〔简单模式〕
类的框架结构图
BottomPanel如图.1所示
CenterPanel如图2.所示
Display如图2.所示
Field如图2.所示
Digit如图2.所示
J_sweep如图2.所示
NorthPanel如图2.4.7所示
BottomPanel
属性
privatestaticfinallongserialVersionUID
操作
publicBottomPanel()
图.1
CenterPanel
privatestaticfinallongserialVersionUID=1L;
privateintcountX,countY,fieldsLeft;
privateField[][]fields;
privateDifficultydifficulty;
privateRandomrandom;
privatebooleangameOver;
privateJ_sweepminesweeper;
publicCenterPanel(J_sweepminesweeper,Difficultydifficulty)
publicvoidsetMinesweeper(Difficultydifficulty)
privatevoidsetFields()
publicvoidpaint(Graphicsg)
privatevoidsetGameOver()
privatevoidsetWon()
privatevoidperformFieldClick(intx,inty)
privatevoidperformFieldClickFlagged(intx,inty)
privatebooleanisNeighbourMinesFlagged(intx,inty)
publicvoidmousePressed(MouseEvente)
图.2
Display
privateDigitdigit0,digit1,digit2;
privateintvalue;
publicDisplay(intvalue)
publicvoidsetValue(intvalue)
publicintgetValue()
图.3
Field
privateintx,y,neighbourMines;
privatebooleanclicked,mine,flag,mineClicked;
privateColorcolor1,color2,color3,color4,color5,color6,color7,color8;
publicField(intx,inty)
publicbooleansetClicked()
publicbooleanisClicked()
publicvoidsetMine(booleanmine)
publicvoidincrementNeighbourMines()
publicintgetNeighbourMines()
publicintsetFlag()
publicbooleanisFlag()
publicvoidsetGameOver()
publicvoidsetWon()
图.4
Digit
privateintdigit,x,y,width,height;
privateColordarkRed;
publicDigit(intdigit,intx,inty)
publicvoidsetDigit(intdigit)
图.5
J_sweep
privatestaticfinallongserialVersionUID
privateNorthPanelnorthPanel;
privateCenterPanelcenterPanel;
privateBottomPanelbottomPanel;
privateJCheckBoxMenuItemmiBeginner,miIntermediate,miExpert;
privateDifficultydifficulty;
publicJ_sweep()
publicvoidstartTime()
publicvoidstopTime()
publicvoidsetMines(intvalue)
publicvoidsetMines(intvalue,booleanreal)
publicvoidsetMainMenuDifficulty()
publicvoidactionPerformed(ActionEvente)
publicstaticvoidmain(String[]args)
图.6
NorthPanel
privateJ_sweepminesweeper;
privateDisplaymineDisplay,timeDisplay;
privatelongbegin;
privateTimertimer;
publicNorthPanel(J_sweepminesweeper,Difficultydifficulty)
publicintstopTime()
图.7
3详细设计
扫雷游戏使用的Java类的说明
类名:
BottomPanel
作用:
这是设计整个界面的底部颜色
继承的父类:
JPanel类
实现的接口:
没有
publicclassBottomPanelextendsJPanel{
publicBottomPanel(){
super();
setBackground(Color.white);
//这是设计整个界面的底部颜色
}
}
J_sweep
主类。
JFrame类
ActionListener类
publicclassJ_sweepextendsJFrameimplementsActionListener
{
privatestaticfinallongserialVersionUID=3905282627525319706L;
//生成序列号,不用管它
privateNorthPanelnorthPanel;
privateCenterPanelcenterPanel;
privateBottomPanelbottomPanel;
privateJCheckBoxMenuItemmiBeginner,miIntermediate,miExpert;
publicJ_sweep()
{
super("
wxl_扫雷"
);
//软件标题
setDefaultCloseOperation(EXIT_ON_CLOSE);
//退出按钮
/*
resizeable值为true时,表示在生成的窗体可以自由改变大小;
resizeable值为false时,表示生成的窗体大小是由程序员决定的,用户不可以自由改变该窗体的大小
*/
setResizable(false);
difficulty=Difficulty.疯狂模式;
//默认定义最高难度
JMenuBarmenuBar=newJMenuBar();
//菜单栏控件
JMenumenu=newJMenu("
文件"
//菜单栏的菜单项
JMenuItemmenuItem=newJMenuItem("
重新玩"
//菜单栏的下拉菜单
menuItem.addActionListener(this);
//给下拉框加上事件捕捉
menu.add(menuItem);
//下拉框放入下拉菜单的控件
menu.addSeparator();
//加个空格线
miBeginner=newJCheckBoxMenuItem("
简单模式"
//选择框下面一样,不解释!
miBeginner.addActionListener(this);
menu.add(miBeginner);
miIntermediate=newJCheckBoxMenuItem("
中等模式"
miIntermediate.addActionListener(this);
menu.add(miIntermediate);
miExpert=newJCheckBoxMenuItem("
疯狂模式"
true);
miExpert.addActionListener(this);
menu.add(miExpert);
menuItem=newJMenuItem("
退出"
menuBar.add(menu);
setJMenuBar(menuBar);
//把菜单栏加入面板
northPanel=newNorthPanel(this,Difficulty.疯狂模式);
//定义一个面板
add(northPanel,BorderLayout.NORTH);
//把这个面板放在上面
centerPanel=newCenterPanel(this,Difficulty.疯狂模式);
add(centerPanel,BorderLayout.CENTER);
//把这个面板放在中间
/*调整此窗口的大小,以适合其子组件的首选大小和布局XJQ*/
bottomPanel=newBottomPanel();
add(bottomPanel,BorderLayout.SOUTH);
pack();
//设置窗口相对于指定组件的位置
setLocationRelativeTo(null);
//设置可视化
setVisible(true);
CenterPanel
设置中间面板
JPanel类
MouseListener类
publicclassCenterPanelextendsJPanelimplementsMouseListener
privatestaticfinallongserialVersionUID=1L;
//用数组定义界面的横向和纵向
//定义难度
Display
计时
没有
publicclassDisplayextendsJPanel
privateDigitdigit0,digit1,digit2;
//定义了一个表示雷的有、无、不确定的量
privateintvalue;
Field
定义数字的颜色
没有
publicclassField
privateintx,y,neighbourMines;
privatebooleanclicked,mine,flag,mineClicked;
privateColorcolor1,color2,color3,color4,color5,color6,color7,color8;
//定义了从1——8之间,八个数字的颜色
类名NorthPanel
定义中间面板
ActionListener类
publicclassNorthPanelextendsJPanelimplementsActionListener
privateDisplaymineDisplay,timeDisplay;
privatelongbegin;
privateTimertimer;
类名Digit
记录剩余雷的数目
publicclassDigit
privateintdigit,x,y,width,height;
privateColordarkRed;
//定义接下来用来绘制数字的颜色
类的主要方法
设计整个界面的底部颜色:
publicBottomPanel(){
}
添加鼠标监听器:
this.setBackground(Color.LIGHT_GRAY);
addMouseListener(this);
this.minesweeper=minesweeper;
this.difficulty=difficulty;
random=newRandom();
setFields();
设置三种模式的界面大小:
intmines=0;
switch(difficulty)
{
case简单模式:
countX=countY=12;
//这是设置简单模式界面横竖都有12个格子
mines=15;
//这是设置简单模式的雷的个数
break;
case中等模式:
countX=countY=16;
//这是设置中等模式界面横竖都有16个格子
mines=40;
//这是设置中等模式的雷的个数
case疯狂模式:
countX=30;
//这是设置疯狂模式界面横向有30个格子
countY=16;
//这是设置疯狂模式界纵向都有16个格子
mines=99;
//这是设置疯狂模式的雷的个数
}
3.2.4绘制记录雷数目的数字
this.digit=digit;
this.x=x;
this.y=y;
width=13;
height=23;
darkRed=newColor(128,0,0);
publicvoidsetDigit(intdigit)
publicvoidpaint(Graphicsg)
g.setColor(Color.BLACK);
g.fillRect(x,y,width,height);
switch(digit)
case0:
case2:
case3:
case5:
case6:
case7:
case8:
case9:
g.setColor(Color.RED);
g.drawLine(x+2,y+1,x+10,y+1);
g.drawLine(x+3,y+2,x+9,y+2);
g.drawLine(x+4,y+3,x+8,y+3);
case-2:
case-1:
case1:
case4:
g.setColor(darkRed);
g.fillRect(x+3,y+1,1,1);
g.fillRect(x+5,y+1,1,1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 扫雷 小游戏 软件设计 报告