1、 JAVA程序设计 A 课程设计 题 目 基于 JAVA 的扫雷游戏的设计与实现 院 (系) 信息工程学院 专 业 班 级 计算机科学与技术 (2)班 学 生 姓 名 学 号 设 计 地 点 教( 13)软件实验 室 指 导 教 师 起止时间: 2014 年 6 月 9 日至 2014 年 6 月 13 日 Java 程序设计 A课程设计任务分工及成绩 院(系):信息工程学院 教研室:软件教研室 课程设计题目 基于 JAVA 的扫雷游戏的设计与实现 课 程 设计内容 用 JAVA 实现扫雷游戏,了解扫雷游戏的基本结构,和理解扫雷的算法,并努力对算法进行改进,调试过程中修复程序中的 bugg,使
2、该 扫雷游戏尽可能完善。 设计内容: 1、扫雷游戏分为初级、中级和高级三个级别。单击游戏菜单可以选择“初级”、“中级”和“高级”。 2、选择级别后将出现相应级别的扫雷区域,这时用户使用鼠标左键单击“开始”便启动计时器。 3、用户要揭开某个方块,可左键单击它。若所揭方块下有雷,用户便输了这一局,若所揭方块下无雷,则显示一个数字,该数字代表方块的周围的 8个方块中共有多少颗雷。 4、如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记 (无论用户的标记是否正确 ),程序将显示的剩余雷数减少一个。 小组成员及任务分配 姓名 学号
3、承担任务 成绩 算法实现 游戏布局 设置监听器 基于 JAVA 的扫雷游戏的设计与实现 摘 要 随着时代的发展,电脑进入了普通老百姓的生活,越来越多的人使用电脑 办公、娱乐、上网,游戏行业发展一日千里,该行业极大的影响和改变了人们的 生活和娱乐方式, 游戏为消费者提供丰富多彩的虚拟空间,使消 费者可以自由自 在的享受虚拟世界的乐趣,实现自己在现实生活着那个可能永远不能实现的梦 想,满足了消费者的心理和精神需求。 扫雷游戏是 Windows 操作系统自带的一款小游戏,本系统要是模仿 WINDOWS 系统 的扫雷 ,对于实现过程中出现的 bug 进行调试解决。我这里用的是 C#编写 了与它功能相似
4、 的扫雷 游戏。 程序的功能是随机生成地雷数,通过鼠标操作玩游戏,不接受键盘,按任意 键结束程序。 单击屏幕上的笑脸可以重新开始游戏。当鼠标左键单击到地雷时提 示游戏失败。 报告首先介绍了进行该 游戏课程设计的目的,然后是任务描述和设 计的相关要求, 最后是最重要的需求分析和设计方案。重点介绍了在游戏过程中 各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为最要, 鼠标事件是利用鼠标所发出的信息了解用户的意图,进而做出相对应的动作。清 除未靠近地雷区的方块较为复杂。 关键词:扫雷游戏,算法设计,事件, JAVA 目 录 1 概 述 . 1 1.1 选题的目的及意义 . 1 1.2
5、 程序设计任务与要求 . 1 2 需求分析 . 2 2.1 扫雷游戏的需求分析 . 2 2.2 扫雷游戏的基本功能操作 . 2 2.3 功能要求 . 2 3 详细设计 . 4 3.1 系统总体设计 . 4 3.1.1 算法思想 . 4 3.1.2 设计思想 . 4 3.1.3 功能分析 . 5 3.2 系统详细设计 . 5 3.2.1 类的设计 . 5 3.2.2 模块的划分及调用关系 . 6 4 系统测试与实现 . 7 4.1 程序测试结果 . 7 4.1.1 游戏玩 家通过右击鼠标来进行扫雷,并显示“雷” . 7 4.1.2 游戏玩家因触到雷而导致游戏结束 . 8 4.1.3 游戏玩家扫雷
6、成功 . 8 4.1.4 游戏玩家可选择游戏难度 . 9 总 结 .10 参考文献 . 11 附 录 .12 1 1 概 述 1.1 选题的目的及意义 本次课程设计的主要目的是为了通过具体的程序来加深对 Java 语言的掌握,提高自己的编程水平。选择的题目来自 Java 课程设计(第二版)中的扫雷游戏,这是一个综合性的题目,可以对 Java 中的各项功能有更好的理解和使用,同时也为以后的工作打下一定的基础。 1.2 程序设计任务与要求 扫雷游戏是一个很有趣的游戏。本章的课程设计使用 Java 语言编写一个与其类似的扫雷游戏。具体要求如下: (1) 扫雷游戏分为初级、中级和高级三个级别。单击游戏
7、菜单可以选择“初级”、“中级”和“高级”。 (2) 选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。 (3) 用户要揭开某个方块,可单击它。若所揭方块下有泪,用户便输了这一局 ,若所揭方块下五雷,则显示一个数字,该数字代表方块的周围的 8 个方块中共有多少颗雷。 (4) 如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记雷。用户每标记出一个扫雷标记 (无论用户的标记是否正确 ),程序将显示的剩余雷数减少一个。 (5) 扫雷胜利后,游戏中的标签会显示“你赢了!” (6)如果在扫雷过程中一不小心碰到了雷,游戏
8、会显示“你输了,这个游戏不适合你!”。 2 2 需求分析 2.1 扫雷游戏的需求分析 随着社会的不断进步,人们的压力也不断的提高,在 游戏层出不穷的时刻,扫雷游戏任然受到不少人的青睐,其本身的性质,决定了人们对它的喜爱的程度,不需要特殊的技巧,不需要不断的升级,还不需要太多的时间进行熟悉,简简单单却趣味无穷。 2.2 扫雷游戏的基本功能操作 本程序需实现的主要功能有: (1) 用户可以自定义级别,并确定雷的个数。 (2) 具有计时功能,即显示用户完成扫雷所花费的时间。 (3) 点击开始进行扫雷。 (4)用户识别雷右击可标记“雷”。 2.3 功能要求 (1)程序的总体功能如图 2.1 所示。 扫
9、 雷 游 戏 主 界 面游戏开始帮助中级初级高级图 2.1 总体功能图 3 (2)程序总体流程如图 2.2 所示。 开 始结 束定 义 并 初 始 化 个 按钮 , 菜 单 等菜 单按 钮事 件 处 理初级中级高级重新开始方块是 否 点 中 雷展 示 相 应 的 效 果菜 单 按 钮NY图 2.2 总体流程图 4 3 详细设计 3.1 系统总体设计 3.1.1 算法思想 (1)计算按钮周围雷数。 (2)随机分布。扫雷游戏要求在 M行 N列的网格游戏区随即的不上 bon 个雷,且 bon的取值应小于 M和 N 的乘积。这可以在一张 M*N的网格上通过均匀分布的随即算法视线。其中 bon的网格是雷
10、区,剩下的网格是非雷区。游戏的目标是尽可能快地找到所有的雷区,而不踩到地雷。 Java提供了视线随即算法的类 Math,通过 Math 类的 random()方法这可以很方便的实现随即布雷的功能。 3.1.2 设计思想 ( 1)扫雷棋盘的布局设计 系统的整体布局为: CardLayout 布局 , 采用了菜单、按钮、面板等组件,菜单主要包括开始,选择级别,标记, 按钮的功能是重新开始新的游戏。 ( 2)雷区的设计 ScanLei1 类是继承了 JFrame实现了 ActionListener 接口,该类里声明了组键,并进行布局, go方法通过设置是否显示窗体,主方法 main()实例化窗体对象
11、, out()方法是 ScanLei1 类中的重要方法之一,也就是扫雷的算法。 actionPerformed(ActionEvent e)就是单击按钮触发的事件,如果是初级按钮触发,分配初级雷区按钮布局。如果是中级按钮触发,分配中级雷区按钮布局。如果是高级按钮触发,分配高级雷区按扭布局。如果是开始按钮触发,开始计数,并随机分配雷,并计算没有雷的按钮周围有雷的数目。如果按钮按键触发,调用 ScanLei1 类中的 out()方法进行扫雷。 NormoreMouseEvent()继承了鼠标适配器,当右击按钮后,根据该按钮上的图标 来判断该按钮是否被右击过,如果有图标,将图标删除,并雷的个数加一。
12、如果该按钮没有被右击过,在该按钮中添加图标,并将雷的个数减一。 5 雷区设计流程图如图 3.3所示。 开 始开 始定 义 并 初 始 化M i n e G r i d 类获 取 相 应 的 设置 , 并 为 方 块 产生 随 机 数 字 赋 值计 数 器 数 小 于 等 级 雷 数存 放 赋 值 雷区 , 计 数 器 加 1鼠 标 是 否 点 击处 理 周 围 信 息 ,并 显 示 相 应 效 果YNYN图 3.3 雷区设计流程图 3.1.3 功能分析 用户可以玩扫雷游戏并能自定义级别(初等,中等,高等);具有计时功能,即显示用户完成扫雷任务所花费的时间。 3.2 系统详细设计 3.2.1 类的设计 (1)initMineArea(int,int,int,int)方法可根据参数提供的数据设置雷区的宽度、高度以及雷区的级别。