java扫雷小游戏软件设计报告.docx

上传人:b****8 文档编号:11453150 上传时间:2023-03-01 格式:DOCX 页数:68 大小:133.79KB
下载 相关 举报
java扫雷小游戏软件设计报告.docx_第1页
第1页 / 共68页
java扫雷小游戏软件设计报告.docx_第2页
第2页 / 共68页
java扫雷小游戏软件设计报告.docx_第3页
第3页 / 共68页
java扫雷小游戏软件设计报告.docx_第4页
第4页 / 共68页
java扫雷小游戏软件设计报告.docx_第5页
第5页 / 共68页
点击查看更多>>
下载资源
资源描述

java扫雷小游戏软件设计报告.docx

《java扫雷小游戏软件设计报告.docx》由会员分享,可在线阅读,更多相关《java扫雷小游戏软件设计报告.docx(68页珍藏版)》请在冰豆网上搜索。

java扫雷小游戏软件设计报告.docx

java扫雷小游戏软件设计报告

佛山科学技术学院

《可视化编程技术》课程设计报告

 

计算器软件设计

 

学生:

吴晓莉

学号:

2011914210

年级专业:

11级教育技术学2班

指导老师:

容汝佳

学院:

教育科学学院

 

广东★佛山

提交日期:

2013年6月

1.前言………………………………………………………………………………2

2.概要设计…………………………………………………………………………3

2.1开发环境……………………………………………………………………3

2.2游戏功能……………………………………………………………………3

2.3界面设计……………………………………………………………………3

2.4类的框架结构图……………………………………………………………4

3.详细设计………………………………………………………………………4

3.1使用的java类的说明……………………………………………………4

3.2类的主要方法………………………………………………………………5

处理按了运算符后的计算……………………………………………5

处理输入字符…………………………………………………………6

进制的转换……………………………………………………………6

设计总体认识…………………………………………………………7

程序流程图……………………………………………………………8

4.运行结果…………………………………………………………………………8

5.测试分析…………………………………………………………………………9

5.1程序运行情况………………………………………………………………9

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

属性

privatestaticfinallongserialVersionUID=1L;

privateDigitdigit0,digit1,digit2;

privateintvalue;

操作

publicDisplay(intvalue)

publicvoidsetValue(intvalue)

publicintgetValue()

publicvoidpaint(Graphicsg)

图.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()

publicvoidpaint(Graphicsg)

图.4

 

Digit

属性

privateintdigit,x,y,width,height;

privateColordarkRed;

操作

publicDigit(intdigit,intx,inty)

publicvoidsetDigit(intdigit)

publicvoidpaint(Graphicsg)

图.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

privatestaticfinallongserialVersionUID

privateJ_sweepminesweeper;

privateDisplaymineDisplay,timeDisplay;

privatelongbegin;

privateTimertimer;

publicNorthPanel(J_sweepminesweeper,Difficultydifficulty)

publicvoidsetMinesweeper(Difficultydifficulty)

publicvoidsetMines(intvalue,booleanreal)

publicvoidstartTime()

publicintstopTime()

publicvoidactionPerformed(ActionEvente)

图.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;

privateDifficultydifficulty;

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);

menu.addSeparator();

menuItem=newJMenuItem("退出");

menuItem.addActionListener(this);

menu.add(menuItem);

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;

privateintcountX,countY,fieldsLeft;

privateField[][]fields;//用数组定义界面的横向和纵向

privateDifficultydifficulty;//定义难度

privateRandomrandom;

privatebooleangameOver;

privateJ_sweepminesweeper;

}

类名:

Display

作用:

计时

继承的父类:

JPanel类

实现的接口:

没有

publicclassDisplayextendsJPanel

{

privatestaticfinallongserialVersionUID=1L;

privateDigitdigit0,digit1,digit2;//定义了一个表示雷的有、无、不确定的量

privateintvalue;

}

类名:

Field

作用:

定义数字的颜色

继承的父类:

没有

实现的接口:

没有

publicclassField

{

privateintx,y,neighbourMines;

privatebooleanclicked,mine,flag,mineClicked;

privateColorcolor1,color2,color3,color4,color5,color6,color7,color8;

//定义了从1——8之间,八个数字的颜色

}

类名NorthPanel

作用:

定义中间面板

继承的父类:

JPanel类

实现的接口:

ActionListener类

publicclassNorthPanelextendsJPanelimplementsActionListener

{

privateJ_sweepminesweeper;

privateDisplaymineDisplay,timeDisplay;

privatelongbegin;

privateTimertimer;

}

类名Digit

作用:

记录剩余雷的数目

继承的父类:

没有

实现的接口:

没有

publicclassDigit

{

privateintdigit,x,y,width,height;

privateColordarkRed;//定义接下来用来绘制数字的颜色

}

类的主要方法

设计整个界面的底部颜色:

publicBottomPanel(){

super();

setBackground(Color.white);

}

添加鼠标监听器:

publicCenterPanel(J_sweepminesweeper,Difficultydifficulty)

{

super();

this.setBackground(Color.LIGHT_GRAY);

addMouseListener(this);

this.minesweeper=minesweeper;

this.difficulty=difficulty;

random=newRandom();

setFields();

}

设置三种模式的界面大小:

privatevoidsetFields()

{

intmines=0;

switch(difficulty)

{

case简单模式:

countX=countY=12;//这是设置简单模式界面横竖都有12个格子

mines=15;//这是设置简单模式的雷的个数

break;

case中等模式:

countX=countY=16;//这是设置中等模式界面横竖都有16个格子

mines=40;//这是设置中等模式的雷的个数

break;

case疯狂模式:

countX=30;//这是设置疯狂模式界面横向有30个格子

countY=16;//这是设置疯狂模式界纵向都有16个格子

mines=99;//这是设置疯狂模式的雷的个数

break;

}

3.2.4绘制记录雷数目的数字

publicDigit(intdigit,intx,inty)

{

this.digit=digit;

this.x=x;

this.y=y;

width=13;

height=23;

darkRed=newColor(128,0,0);

}

publicvoidsetDigit(intdigit)

{

this.digit=digit;

}

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);

break;

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);

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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