基于java的扫雷游戏的设计-计算机毕业设计

news2024/11/17 22:37:14

项目介绍

扫雷游戏的基本功能:点击鼠标左键于未知区域,如果未知区域有雷,游戏停止,显示所有的地雷。如果没雷,则显示周围雷数,如果周围没雷,则再查看周围八个区域是否有雷直到有雷为止并显示,玩家需要尽快找出雷区中的所有不是地雷的方块,而不许踩到地雷。

扫雷游戏的设计主要是对Java语音中Gui图形化界面的应用.

扫雷游戏的基本功能:点击鼠标左键于未知区域,如果未知区域有雷,游戏停止,显示所有的地雷。如果没雷,则显示周围雷数,如果周围没雷,则再查看周围八个区域是否有雷直到有雷为止并显示,这其实是一个递归过程。点击鼠标右键于未知区域,则将其置为有雷而不管是否真的有雷。可选择初、中、高三级并可自定义雷数和区域大小以及游戏时间,剩余雷数等。
扫雷游戏分为初级、中级、高级和自定义四个级别。单击游戏菜单可以选择“初级”、“中级”、“高级”或“自定义”; 选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器;用户要揭开某个方块,可单击它。若所点方块下有雷,用户便输了这一局,若所点方块下无雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷;如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记“雷”;用户每标记出一个扫雷标记(无论用户的标记是否正确),程
序将显示的剩余雷数减少一个;扫雷胜利后,游戏中的标签会显示“你赢了!”;如果在扫雷过程中一不小心碰到了雷,游戏会显示“你输了!”。
所以本程序需实现的主要功能有:用户可以自定义级别,并确定雷的个数;具有计时功能,即显示用户完成扫雷所花费的时间;用户识别雷右击可标记“雷”。

流程规划大致上可以分为三个部分,分别为:画面初始、游戏者按下第一个方块和为非地雷方块时展开。
画面初始时,以游戏者最后一次设定的地雷区大小为范围画出地雷区,但此时并未产生地雷。当游戏者按下第一个方块时产生地雷资料并启动定时器,为何在游戏者按下第一个方块才产生地雷资料呢?其主要的用意在于不要让游戏者第一次就踩到地雷,这样在某种程度上可以提高游戏者游玩的气氛。接着就是如何判断按下的方块是非地雷时的处理,这也是整个游戏的技术核心,我们可以通过递归的观念来检查周边的方块是否含有地雷及是否继续往外翻开。
程序的执行方面必须判断:以按下方块为中心,检查周围八个方块是否为非地雷方块,若其中有一个方块是非地雷方块时,则又以其为中心,向外检查周围八个方块是否为非地雷方块,如此反复的执行即构成递归的使用条件。

游戏的判断
游戏成功完成,当在规定的时间内将所有的雷都正确的标示出来,游戏就会有一个弹出框提示你在多长时间内完成当前难度下的游戏。还有一种情况便是当只剩下地雷未探测的时候,及雷区方块总数-已清除的方块数=地雷总数的话,游戏也将成功完成。
游戏失败,当鼠标左键按下的方块为地雷方块事,地雷将会被引爆,游戏立即结束。
当在设定时间内未探测完所有的地雷,地雷也将会引爆,对于这第二种行为,我们可以通过Timer组件来加以控制。利用Timer组件在固定时间即会触发时间的特性,在事件触发时便将计数值加一,直到判断计数值超过限定值时,即地雷引爆。

效果图在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1 绪论 1
1.2 扫雷游戏的玩法 2
1.3 扫雷游戏与科学 2
1.4 开发语言及工具 3
1.4.1 java语言及特点 3
1.4.2 开发工具简介 5
2 扫雷游戏的分析 5
2.1 游戏可行性分析 5
2.2 游戏需求分析 5
2.3 游戏功能分析 6
3 扫雷游戏设计 6
3.1 游戏功能设计 6
3.2 游戏总体设计 7
3.2.1 算法思想 7
3.2.2 游戏界面设计 8
3.3 游戏详细设计 9
3.3.1 雷区设计流程图 9
3.3.2 游戏类设计 10
3.3.3 游戏外部文件的设计 11
4 扫雷游戏的实现 11
4.1 随机布雷的实现 11
4.2 点击后提示数字的实现 13
4.3 游戏结束的实现 14
5 游戏的运行效果 15
5.1 游戏界面 15
5.2 游戏胜利 15
5.3 游戏失败 16
6 扫雷技巧 16
6.1 活用定式 16
6.2 局部优化 17
7 总结 18
参 考 文 献 19
致 谢 20

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96382.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jsp+ssh+mysql实现的Java web学生考勤管理系统源码附带视频指导运行教程

今天给大家演示的是一款由jspsshmysql实现的Java web学生考勤管理系统,其中struts版本是struts2。本系统实现了管理员、学生、教师三个角色的功能,其中管理员可以管理基本信息,如班级信息、课程信息、用户信息、课程表等。教师可以管理自己班…

mongodb实现请求日志存储

引言 最近学习了mongodb,想实际应用到项目中,就先简单实现了一个存储请求日志的功能; 为什么使用mongodb存储日志,主要是因为日志数据量大、低价值、写入频繁,并且对事务要求不高,使用传统的关系型数据库…

Java强软弱虚引用和ThreadLocal工作原理(二)

1. 前言 读本篇文章之前,请移步到上一篇文章Java强软弱虚引用和ThreadLocal工作原理(一)_broadview_java的博客-CSDN博客 我们继续来讲一下java的强软弱引用在Android开发中的使用,并深入理解一下ThreadLocal的原理 2. 强软弱引…

Pro3:js实现放大镜效果

在我们平时见到很多购物网站都会有放大镜效果的出现,当我们将鼠标放在一个商品图片的上面,就会在旁边出现对应的放大效果。 实现步骤 实现原理是非常简单的,实际上是两张图片,一张原图和一张更大尺寸的图片。一开始通过css样式…

MessageFormat的具体使用(格式化消息)

文章目录1. 前言2. 先说结论3. 在结论上补充其他更加特殊情况1. 数字类型可以使用#字符来确认精度2. 数组类型转化需要注意3. 输出特殊字符4. 如何判断一个String是否有替换位4. 粗略原理1. 前言 在工作中发现接口的返回报文,大部分公司通常都会封装一层&#xff0c…

2022-LCLR-DIFFDOCK: DIFFUSION STEPS, TWISTS, AND TURNS FOR MOLECULAR DOCKING

2022-LCLR-DIFFDOCK: DIFFUSION STEPS, TWISTS, AND TURNS FOR MOLECULAR DOCKING Paper: https://arxiv.org/abs/2210.01776 Code: https://github.com/gcorso/DiffDock 预测小分子配体与蛋白质的结合结构(称为分子对接)是药物设计的关键。最近的深度学习方法将对接视为一个回…

GB/T 20984-2022《信息安全技术 信息安全风险评估方法》解读

前言 近年来,信息安全风险评估工作逐步在国家基础信息网络及重要行业信息系统中普遍推行,信息安全风险评估是信息安全保障工作的基础和重要环节,日前, GB/T 20984-2022 《信息安全技术 信息安全风险评估方法》发布,将…

oracle学习篇(四)

oracle学习篇(四) 1 PL/SQL异常处理 1.1 预定义异常 1.1.1 内容 oracle里面已经存在的异常 如果是自定义异常,一般写的编号是20000-20999之间1.1.2 处理异常语法 exceptionwhen 异常类型1 then输出异常类型信息1;when 异常信息2 then输出异常类型信息2;--以上都…

MR案例:学生排序(单字段排序、多字段排序)

文章目录一、提出任务二、完成任务(一)准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录(二)实现步骤1、创建Maven项目2、添加相关依赖3、创建日志属性文件4、创建学生实体类5、创建学生映射器类5、创建学生归并器类6…

JS中操作<select>标签选的值

JS中操作<select>标签选的值 <select>标签是一种表单控件&#xff0c;用来创建下拉列表。在<select> 标签内可用 <option> 标签定义下拉列表中的可用选项。下面给出一个基本下拉列表示例&#xff1a; <!DOCTYPE html> <html lang"zh&q…

Codeforces Round #838 (Div. 2)

A. Divide and Conquer 题目链接&#xff1a;Problem - A - Codeforces 样例输入&#xff1a; 4 4 1 1 1 1 2 7 4 3 1 2 4 1 15样例输出&#xff1a; 0 2 1 4题意&#xff1a;一个数组是好的当且仅当所有的元素和是一个偶数&#xff0c;现在给我们一个初始数组&#xff0c;我…

Android---组件化

1、单体应用 所有代码写在一个工程里。不同业务写到各自模块&#xff0c;以包名来区分。 弊端 1、无论包名做的再好&#xff0c;随着项目扩大&#xff0c;项目失去层次感&#xff0c;接受吃力。 2、报名作为约束&#xff0c;太弱了。一不注意就会出现不同业务之间之间相互调…

【算法数据结构专题】「限流算法专项」带你认识常用的限流算法的技术指南(分析篇)

限流 限流的目的是通过对并发访问/请求进行限速&#xff0c;或者对一个时间窗口内的请求进行限速来保护系统&#xff0c;一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理 限流一词常用于计算机网络之中&#xff0c;定义如下&#xff1a; In computer networks, rate l…

接口测试(七)—— 参数化、数据库操作类封、接口自动化框架

目录 一、接口自动化测试框架 1、目录结构 二、封装iHRM登录 1、普通方式实现 2、登录接口对象层 3、登录接口测试用例层 4、封装断言方法 三、参数化 1、回顾UnitTest参数化 1.1 原始案例 1.2 参数化实现 1.3 从json文件读取 2、登录接口参数化 2.1 组织数据文…

java8流操作之不常用但是很好用的隐藏api

前言 1、一些普通的方式就不再多说了&#xff0c;这里主要说一些不常用的&#xff0c;但是作用很大的api方式 2、如果想要细致了解可以参考 JAVA8的流操作&#xff0c;十分推荐 一、flatMap 1、这个api主要是用来推平流的&#xff0c;和map不一致&#xff0c;map是对象到对…

Python基础(十六):函数的初步认识

文章目录 函数的初步认识 一、函数的作用 二、函数的使用步骤 1、定义函数 2、调用函数 3、快速体验 三、函数的参数作用 四、函数的返回值作用 1、应用 五、函数的说明文档 1、语法 2、快速体验 3、函数嵌套调用 七、函数应用 1、打印图形 2、函数计算 八、总…

还在为多张Excel汇总统计发愁?Python 秒处理真香!

为什么越来越多的非程序员白领都开始学习 Python &#xff1f;他们可能并不是想要学习 Python 去爬取一些网站从而获得酷酷的成就感&#xff0c;而是工作中遇到好多数据分析处理的问题&#xff0c;用 Python 就可以简单高效地解决。本文就通过一个实际的例子来给大家展示一下 P…

新手传奇gm架设要学会的几个修改技巧

每个传奇gm对于架设一个服务器都有自己独立的看法和想法&#xff0c;一些人之所以会想着要架设一个传奇私服主要原因是自己在其他人的服力玩得不是那么舒心。所以想要按照自己的想法和思路打造一个适合自己的专属服务器进行游戏&#xff0c;其实这两者之间是有必然联系的&#…

毕业三年活得像个废物,转行网络安全,写给像我一样迷茫的人...

首先说说我吧&#xff0c;普通二本非科班商贸专业毕业&#xff0c;三年了&#xff0c;做过电商&#xff0c;做过新媒体&#xff0c;做过业务员&#xff0c;从躺平到摆烂&#xff0c;一开始还挺享受这样的生活的&#xff0c;毕竟每月4千工资&#xff0c;抛出吃住&#xff0c;剩个…

重学webpack系列(八) -- webpack的运行机制与工作原理

前面几个章节我们分别去探索了webpack的loader机制、plugin机制、devServer、sourceMap、HMR&#xff0c;但是你是否知道这些配置项是怎么去跟webpack本身执行机制挂钩的呢&#xff1f;这一章我们就来探索一下webpack的运行机制与工作原理吧。 webpack核心工作过程 我们打开w…