(完整word版)JAVA课程设计--扫雷游戏.doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

合肥学院

计算机科学与技术系

课程设计报告

2009~2010 学年第二学期

课程Java语言与应用

课程设计名称扫雷游戏

学生姓名胡远远

学号0604031005

专业班级07 网络工程一班

指导教师许强张贯虹

2010 年09 月

1.设计内容及要求

1.1 扫雷游戏的基本要求

Windows 2000/XP 系提供的雷游是一个很有趣的游。本章的程

使用 Java 言写一个与其似的雷游。具体要求如下:

(1)后将出相的雷区域,是用使用鼠左雷区中任何一个方便启

器。

(2)用要揭开某个方,可它。若所揭方下有雷,用便了一局,若所揭方下五雷,示一个数字,数字代表方的周的 8 个方中共有多少雷。

(3)如果用某个方下埋着雷,右可以在方上一个用

是雷的,即出一个雷。用每出一个雷 ( 无用的是否正确 ) ,程序将示的剩余雷数减少一个。

(4)雷利后,示游利。

(5)用可以右空格,可以“旗”、“ 号”或者返回成空格。

1.2 需实现的主要功能

(1)用点笑复位操作。

用 repaint()和 validate()函数界面行重置以及刷新操作

(2)可以示用完全雷成功所花。

文本框 TF 雷成功所花的

(3)在失和利后跳出失或利的文本框

JoptionPane 用来出框并提示利

2.需求分析

2.1 扫雷棋盘的布局设计

系的整体布局: CardLayout 布局 ,采用了文本框、按、面板、框架⋯

等件,菜主要有run 按笑和哭,按的功能是重新开始新的游。

2.2 雷区的设计

MineArea 类是 javax.swing包中Jpanel容器的子类,实现了ActionListener 和MouseListener 接口,所创建的对象: mineArea 是 MineGame类中最重要的成员之一,作为一个容器添加到 MineGame窗口的中心。标明 MineArea 类的主要成员变量、方法以及和MineGame类之间组合关系的UML图如下图所示。

JPanel ActionListener MouseListener

MineArea MineGame

mineArea:

row,colum,mineCount,markMount: in

lay: LayMines MineArea

block: Block[]

record: Record ------------------ blockView: BlockView[][]

reStart: JButton

showTime: JTextField

time: Timer

shouMarkedMineCount: JTextField

initMineArea(int,int,int): void

show(int m,int n): void

actionnPerformed(ActionEvent) void

inquireWin(): void

mousePressed(MouseEvent): void

MineArea 类的 UML 图

以下是 UML 图中有关数据和方法的详细说明。

1、成员变量

(1)block 是 Block 类型的数组,用来确定雷区有多少需进行扫雷的方块。

(2)blockView 是 BlockView 类型的数组,负责为 block 数组中的 Block 对象提供视图。

(3)lay 是 LayMines 类型的对象,负责设置block 数组中的哪些方块是雷或不是雷。

(4)run 是一个按钮对象,用户单击它重新开始游戏。

(6)time 是计时器对象,负责计算用户的用时。

2、方法

(1)setbounds(int,int,int,int)方法可根据参数提供的数据设置雷

区的宽度、高度、雷的数目。

(2)actionPerformed(ActionEvent) 是 MineArea 类实现的 ActionListener 接口中的方法。当用户单击 blockView 中的某个方块时,actionPerformed(ActionEvent) 方法负责执行有关算法,例如,当用鼠标左键单击方块上的按钮后,若该方块下有雷, lost(ActionEvent) 方法将使用户输掉本局,若该方块下无雷, getboomcount(ActionEvent) 方法将显示 icon 对象中的标

签,该标签上是一个数字,该数字代表当前方块的周围的8 个方块中共有多少颗雷。

(3)Mouse_Handler (MouseEvent) 方法是 MineArea 类实现的 MouseListener 接口中的方法,当用户按下鼠标有件事mouseReleased(MouseEvent)方法负责让方块上显示一个探雷标记。

(4)iswin函数判断是否扫雷成功

当雷数全部被正确的排除,或者无雷区已经被全部点开,只剩雷时,判定为

胜利, JoptionPane 类创建的对象讲调用方法showMessageDialog()弹出对话框提示: YOU WIN!

3.总体设计

总体流程图

4.主要功能设计流程

4.1 雷区设计流程图

开始

定义并初始化

MineGrid 类

获取相应的设

置,并为方块产

生随机数字赋值

计数器数小于等级雷数N

Y

存放赋值雷

N

区,计数器加 1

鼠标是否点击

Y

处理周围信息,

并显示相应效果

开始

雷区设计流程图

在实现以上功能时,主要需解决的功能模块如下:

1、怎样产生雷?

setBoomPosi() 方法中 posi[]数组用来记录雷的位置,先在雷区中随机产生一个雷,记录为posi[0], 并记录其X,Y 坐标位置,然后再使用Math.random()*maxPosi+1 方法产生第二个雷,并判断其X 坐标是否与POSI[0] 重复,若重复,重新产生一个雷,并再次进行判断,直至坐标相异为止,若不重复,则用 posi[1]记录该雷,并记录其XY 坐标位置。同理,以此类推,便可产

相关文档
最新文档