1、LOGO指指导教师导教师:胡忠良:胡忠良Java版版扫扫雷的雷的设计与实现设计与实现n班班级级:11060341Xn学学生:生:祁乐祁乐n学号学号:45论文的结构和主要内容论文的结构和主要内容论文主要包含有以下几部分:论文主要包含有以下几部分:u背景及意义背景及意义u游戏的分析及设计游戏的分析及设计u游戏的功能与实现游戏的功能与实现u总结与致谢总结与致谢设计的背景及意义设计的背景及意义u游戏的设计背景游戏的设计背景扫雷是一款玩法相当简单的大众化的小游戏,游戏的胜利条扫雷是一款玩法相当简单的大众化的小游戏,游戏的胜利条件是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同件是在最短的时间内
2、根据点击格子出现的数字找出所有非雷格子,同时要避免踩到雷。微软于时要避免踩到雷。微软于19901990年年1010月收购了扫雷的版权,并随纸牌游月收购了扫雷的版权,并随纸牌游戏(戏(SolitaireSolitaire)一同加载到)一同加载到19921992年发布的年发布的Windows 3.1Windows 3.1系统上,扫雷系统上,扫雷从此流行起来,之后迅速成为了各种操作系统中必不可少的一款游戏从此流行起来,之后迅速成为了各种操作系统中必不可少的一款游戏。自自19921992年至今,微软的年至今,微软的WindowsWindows操作系统经过数次换代更新操作系统经过数次换代更新,变得越来越
3、庞大、复杂,功能也越来越强大,但是这款小游戏依然,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。设计的背景及意义设计的背景及意义u游戏设计的意义游戏设计的意义随着社会的不断进步,随着社会的不断进步,计算机得普及,人们越来越多得接触计算机得普及,人们越来越多得接触到计算机,计算机逐步渗入社会生活各个层面,人们长时间的面对计到计算机,计算机逐步渗入社会生活各个层面,人们长时间的面对计算机难免会有倦怠的情绪。现在生活节奏的越来越快,算机难免会有倦怠的情绪。现在生活节奏的越来越快,人们的
4、压力也人们的压力也不断的提高,在游戏层出不穷的时刻,人们对游戏的需求也不断提高不断的提高,在游戏层出不穷的时刻,人们对游戏的需求也不断提高,而扫雷游戏任然受到不少人的青睐,而扫雷游戏任然受到不少人的青睐,这款小游戏不会花太多时间,这款小游戏不会花太多时间,同时把玩家得思维带动起来,达到一举多得得效果。同时把玩家得思维带动起来,达到一举多得得效果。其本身的性质,其本身的性质,决定了人们对它的喜爱的程度,不需要特殊的技巧,不需要不断的升决定了人们对它的喜爱的程度,不需要特殊的技巧,不需要不断的升级,还不需要太多的时间进行熟悉,简简单单却趣味无穷。级,还不需要太多的时间进行熟悉,简简单单却趣味无穷。
5、游戏的分析及设计游戏的分析及设计u游戏的要求分析游戏的要求分析扫雷游戏的基本功能:点击鼠标左键于未知区域扫雷游戏的基本功能:点击鼠标左键于未知区域,如果未知如果未知区域有雷区域有雷,游戏停止游戏停止,显示所有的地雷。如果没雷显示所有的地雷。如果没雷,则显示周围雷数则显示周围雷数,如如果周围没雷果周围没雷,则再查看周围八个区域是否有雷直到有雷为止并显示则再查看周围八个区域是否有雷直到有雷为止并显示,这这其实是一个递归过程。点击鼠标右键于未知区域其实是一个递归过程。点击鼠标右键于未知区域,则将其置为有雷而则将其置为有雷而不管是否真的有雷。可选择初、中、高三级并可自定义雷数和区域大不管是否真的有雷。
6、可选择初、中、高三级并可自定义雷数和区域大小以及游戏时间,剩余雷数等。小以及游戏时间,剩余雷数等。所以本程序需实现的主要功能有:用户可以自定义级别,并所以本程序需实现的主要功能有:用户可以自定义级别,并确定雷的个数;具有计时功能,即显示用户完成扫雷所花费的时间;确定雷的个数;具有计时功能,即显示用户完成扫雷所花费的时间;用户识别雷右击可标记用户识别雷右击可标记“雷雷”。游戏的分析及设计游戏的分析及设计u游戏算法分析游戏算法分析(1 1)随机分布。扫雷游戏要求在)随机分布。扫雷游戏要求在M M行行N N列的网格游戏区随即列的网格游戏区随即的不上的不上X X个雷,且个雷,且X X的取值应小于的取值
7、应小于M M和和N N的乘积。这可以在一张的乘积。这可以在一张M M*N N的网的网格上通过均匀分布的随即算法视线。其中格上通过均匀分布的随即算法视线。其中X X的网格是雷区,剩下的网的网格是雷区,剩下的网格是非雷区。游戏的目标是尽可能快地找到所有的雷区,而不踩到地格是非雷区。游戏的目标是尽可能快地找到所有的雷区,而不踩到地雷。雷。JavaJava提供了视线随即算法的类提供了视线随即算法的类MathMath,通过,通过MathMath类的类的randomrandom()方()方法这可以很方便的实现随即布雷的功能。法这可以很方便的实现随即布雷的功能。(2 2)计算按钮周围雷数)计算按钮周围雷数。
8、当一个方块被点击时,如果显示当一个方块被点击时,如果显示1 1则表示周围则表示周围8 8格内有格内有1 1个雷,如果是个雷,如果是2 2就是周围就是周围8 8格有格有2 2个雷,以此类推个雷,以此类推,以递归的的方式计算方块被点击时应该显示的数字。,以递归的的方式计算方块被点击时应该显示的数字。游戏的分析及设计游戏的分析及设计u游戏类设计游戏类设计GameGame类是继承了类是继承了JFrameJFrame实现了实现了RunnableRunnable接口,该类里声明了接口,该类里声明了组键,并进行布局,主方法组键,并进行布局,主方法main()main()实例化窗体对象实例化窗体对象,来启动游
9、戏。来启动游戏。LevelLevel类设定游戏的难度,该类继承了类设定游戏的难度,该类继承了JDialogJDialog类来创建一个类来创建一个临时的对话框,来进行难度的调整,类中预设了初级难度、中级难度临时的对话框,来进行难度的调整,类中预设了初级难度、中级难度和高级难度三种难度的窗体大小及雷区分布,还有玩家自定义难度的和高级难度三种难度的窗体大小及雷区分布,还有玩家自定义难度的窗体大小及雷区分布的调整。窗体大小及雷区分布的调整。PanelPanel类来统计玩家的对局信息,通过类来统计玩家的对局信息,通过OutputStreamWriterOutputStreamWriter()方法和()方
10、法和FileOutputStreamFileOutputStream()将数据写到指定的文件中来储存玩()将数据写到指定的文件中来储存玩家的游戏信息,玩家可以通过重置按钮将信息清空置零。家的游戏信息,玩家可以通过重置按钮将信息清空置零。MyButtonMyButton类继承了类继承了JFrameJFrame实现了实现了MouseListenerMouseListener接口,主要接口,主要通过通过mouseClickedmouseClicked()方法来对鼠标事件监听来改变雷区按钮的状态()方法来对鼠标事件监听来改变雷区按钮的状态,以此来判读玩家是否,以此来判读玩家是否“踩到雷踩到雷”。But
11、ton1Button1类继承了类继承了MyButtonMyButton类,通过类,通过SetIconSetIcon()方法加载一()方法加载一些外部图片来改变雷区按钮的样式,对踩雷进行判断。些外部图片来改变雷区按钮的样式,对踩雷进行判断。游戏的功能与实现游戏的功能与实现u雷区雷区功能功能流程图流程图游戏的功能与实现游戏的功能与实现u随机布雷的功能随机布雷的功能当游戏开始时程序需要根据玩家所选难度,确定大小的矩形当游戏开始时程序需要根据玩家所选难度,确定大小的矩形雷区中随机布置的地雷数量雷区中随机布置的地雷数量(初级为初级为9 9*9 9个方块个方块1010个雷,中级为个雷,中级为1616*16
12、16个方块个方块4040个雷,高级为个雷,高级为1616*3030个方块个方块9999个雷,自定义级别可以自己设个雷,自定义级别可以自己设定雷区大小和雷数,但是雷区大小不能超过定雷区大小和雷数,但是雷区大小不能超过2424*30)30),并将这些地雷随,并将这些地雷随机分布在雷区,该过程主要由机分布在雷区,该过程主要由JavaJava提供的提供的RandomRandom方法解决,并且计算方法解决,并且计算出每个按钮周围八个按钮有多少是雷。出每个按钮周围八个按钮有多少是雷。u游戏结束的实现游戏结束的实现游戏结束分为两种情况一种是正确标记出所有的地雷取得胜游戏结束分为两种情况一种是正确标记出所有的
13、地雷取得胜利后的结束;一种是踩到地雷后游戏失败后的结束。游戏结束后将游利后的结束;一种是踩到地雷后游戏失败后的结束。游戏结束后将游戏数据统计储存同时还需给玩家一个提示框,让玩家选择继续游戏,戏数据统计储存同时还需给玩家一个提示框,让玩家选择继续游戏,还是退出游戏。还是退出游戏。游戏的功能与实现游戏的功能与实现u游戏界面图游戏界面图游戏的功能与实现游戏的功能与实现u 游戏胜利图游戏胜利图游戏的功能与实现游戏的功能与实现u 游戏失败图游戏失败图全文总结全文总结本次毕业主要通过研究本次毕业主要通过研究WindowsWindows操作系统自带的扫雷游戏来操作系统自带的扫雷游戏来完成,在编程中也遇到了许
14、多的问题,有些问题看上去比较简单但却完成,在编程中也遇到了许多的问题,有些问题看上去比较简单但却不知道错在哪里,有些问题比较大,知道错在哪里却不知道应该怎样不知道错在哪里,有些问题比较大,知道错在哪里却不知道应该怎样解决,后来经过不断的调试,网上查资料,询求指导老师的帮助,这解决,后来经过不断的调试,网上查资料,询求指导老师的帮助,这个扫雷游戏终于大功告成。由于本人的技术能力有限,开发时间较短个扫雷游戏终于大功告成。由于本人的技术能力有限,开发时间较短暂,游戏难免会有一些不足的地方。本次设计只是完成了扫雷游戏的暂,游戏难免会有一些不足的地方。本次设计只是完成了扫雷游戏的基本功能,在细节方面仍有
15、待以后完善。基本功能,在细节方面仍有待以后完善。经过本次毕业设计经过本次毕业设计JavaJava扫雷游戏的编写,我发现自己有很多扫雷游戏的编写,我发现自己有很多的不足,我想如果单纯让我来独自来编写这个游戏,而不是模仿的不足,我想如果单纯让我来独自来编写这个游戏,而不是模仿WindowsWindows系统自带的扫雷游戏,我感觉能编出来的可能性很小,因为系统自带的扫雷游戏,我感觉能编出来的可能性很小,因为这个游戏虽然看起来很小很简单但也涉及到了好多算法。通过这次游这个游戏虽然看起来很小很简单但也涉及到了好多算法。通过这次游戏的设计,我认识到应该注意细节问题,虽然是很小的问题,但可以戏的设计,我认识
16、到应该注意细节问题,虽然是很小的问题,但可以提高自己编程的能力,而且还可以培养自己编程的严谨性,同时还可提高自己编程的能力,而且还可以培养自己编程的严谨性,同时还可以为以后的编程积累经验。编写完这个扫雷游戏,感触最深的就是我以为以后的编程积累经验。编写完这个扫雷游戏,感触最深的就是我们真的要扎扎实实的打基础!们真的要扎扎实实的打基础!大学四年的生活随着毕业设计的尾声即将成为我们一大学四年的生活随着毕业设计的尾声即将成为我们一生弥足珍贵的记忆。从开始的选题到现在即将到来的答辩,期生弥足珍贵的记忆。从开始的选题到现在即将到来的答辩,期间遇到许多问题。为了解决这些问题,我查阅了许多课题相关间遇到许多问题。为了解决这些问题,我查阅了许多课题相关的书籍,也从网上收集了大量的资料以及获得了指导老师的帮的书籍,也从网上收集了大量的资料以及获得了指导老师的帮助。助。在此我要感谢本次设计课题的指导老师胡忠良老师,在此我要感谢本次设计课题的指导老师胡忠良老师,以及那些帮助过我的老师以及同学们,正因有他们的帮助,我以及那些帮助过我的老师以及同学们,正因有他们的帮助,我才能顺利的完成此次毕业设计。才能顺利的完成此次毕业设计。致谢致谢谢谢观看!
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。