基于java的扫雷课程设计内容摘要:

表方块的周围的 8 个方块中共有多少颗雷。 (4) 如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。 用户每标记出一个扫雷标记 (无论用户的标记是否正确 ),程序将显示的剩余雷数减少一个。 (5)当用户点中雷时,将有“你输了”的提示出现,胜利时,将有“你赢 了”的提示出现。 功能需求分析 本程序为 java 课程设计。 参考 Windows 自带的扫雷游戏做了简化。 用 java编写,采用了 Swing 界面。 实践了 java 课程多方面的内容。 本程序实现了主要游戏的主要方面,单游戏固定为 10 x 10 格,难度三级:12, 24, 36。 主要实现了如下算法:单击某行某列后产生不在单击处引爆的地图。 出现空格后引发递归的清空算法。 检测是否所有地雷都被标记,且没有多标的胜利检测算法。 控制一个计数器产生计时效果的计时器算法。 等侯用户单击返回的线程。 以及可区分用户鼠标左键,右 键和左右两键单击的事件处理方法。 程序设计主要考虑了程序的完整性和规范性。 界面符合 Windows 常规,主要通过菜单和按钮与用户交互。 所有菜单项都实现了响应功能。 且主界面多用图标示意,较美观。 第 6 页 第 三 章 游戏的 具体 分析 总体功能图 图 31 总体功能图 第 7 页 主要功能设计流程 总体流程图 图 321 总体流程图 开始 定义并初始化按钮,菜单等 事件处理 菜单 按钮 重新开始 方块 开局 初级 高级 中级 自定义 英雄榜 退出 展示相应效果 N 是否点中雷 结束 Y 算法课程设计 扫雷游戏 第三章 游戏的具体分析 第 8 页 雷区设计流程图 开 始开 始定 义 并 初 始 化M i n e G r i d 类获 取 相 应 的 设置 , 并 为 方 块 产生 随 机 数 字 赋 值计 数 器 数 小 于 等 级 雷 数存 放 赋 值 雷区 , 计 数 器 加 1鼠 标 是 否 点 击处 理 周 围 信 息 ,并 显 示 相 应 效 果YNYN 图 322 雷区设计流程图 算法课程设计 扫雷游戏 第三章 游戏的具体分析 第 9 页 排行榜设计流程图 开 始结 束读 取 游 戏 级 别以 及 记 录游 戏 是 否 完 成完 成 时 间 是 否 更 短更 新 原 始 记 录并 且 保 存YNNY 图 323 排行榜设计流程图 各个类的详细介绍与关键代码 类之间关系图 图 331 类之间关系图 算法课程设计 扫雷游戏 第三章 游戏的具体分析 第 10 页 MainFrame 类 MainFrame 主程序类是整个程序的入口,通过 package。 包将其放在 nicholas 的 game 下的 mine 子文件夹内,继承了 JFrame 并实现了ActionListener、实现了主 界面各控件的布局、 led 灯,时间计数器,级别,失败和成功,各种状态的初始化。 还实现了从 mine 文件里读取信息和保存信息并实现鼠标双击单击,双击,移动时发生的事件。 其关键性代码如下: private class StatusMouseAdapter extends MouseAdapter { private boolean mouseIn。 private boolean mouseDown。 private Icon icon。 public StatusMouseAdapter() { super()。 } public void mouseEntered(MouseEvent me) {//组件按下时 mouseIn = true。 if(mouseDown) { (())。 icon = ()。 (().getImageicon(18))。 } } public void mousePressed(MouseEvent me) {//组件释放时 mouseDown = true。 (())。 icon = ()。 (().getImageicon(18))。 } public void mouseReleased(MouseEvent me) { mouseDown = false。 (icon)。 (())。 if(mouseIn) restartGame()。 } public void mouseExited(MouseEvent me) { mouseIn = false。 if(mouseDown) { 第 11 页 (icon)。 (())。 } } } public void mouseEntered(MouseEvent me) {//鼠标按下 current = (MineGrid)()。 if(leftDownamp。 amp。 rightDown) { pressAround(current)。 } else if(leftDown) { pressGrid(current)。 } } public void mouseReleased(MouseEvent me) {//鼠标释放时 if(()) (().getImageicon(17)。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。