(完整word版)JAVA课程设计--扫雷游戏.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 坐标位置。同理,以此类推,便可产