计算机网络技术毕业论文3_第1页
计算机网络技术毕业论文3_第2页
计算机网络技术毕业论文3_第3页
计算机网络技术毕业论文3_第4页
计算机网络技术毕业论文3_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、成绩 本科生毕业论文 题 目: 扫雷游戏软件设计与实现 年 级:0801专 业:计算机科学与技术学 号:20080006101姓 名:谷雪洁 指导教师:孙霞 年 月 日诚信声明本人郑重声明:本人所呈交的毕业论文(设计)是在导师的指导下独立进行研究所取得的成果。毕业论文(设计)中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。除文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或在网上发表的论文。特此声明。论文作者签名: 日 期: 年 月 日 目 录1引言 1 1.1 课题背景及意义 1.2开发工具的选用及介绍2游戏软件的总体分析与设计2.1软件功能需求分析2.2 软件

2、界面设计2.3算法流程设计3游戏软件的详细设计3.1游戏初始化3.2雷区的布置3.3主要功能模块实现3.3.1 鼠标事件3.3.2 地雷及雷区表面探测情况3.3.3 清除未靠近地雷的方块3.3.4 界面实现4游戏软件测试结 论参考文献 1引言1.1 课题背景及意义 随着不断发展的社会,科学也一步步的提升,而计算机也成为了当今社会不可或缺的一部分,今天,人们用计算机工作、通讯、聊天、视频、游戏、娱乐。我们每天都在使用着计算机。在如此快速的社会里,每一个人都有着重大的压力。而此刻游戏也就成了我们没一个人用于释放压力的首选。 近年来,随着网络的发展,游戏便成为了许多人关注的焦点。与传统的影音产业一样

3、,游戏产业也是娱乐行业的一个重要组成部分,基于数字化的网络游戏更让人们找到了前所未有的感受,并已经成为全球互联产业的热点。就在我们所熟悉的windows7系统中就携带了不少这样的游戏。扫雷游戏就是windows操作系统自带的一款小游戏,在过去的几年里,windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。不过还是有很多人对这款游戏不太了解。本次的毕业设计我将利用eclipse 3.4.2作为开发工具,开发一款类似的“扫雷游戏”。从而对这款游戏能够有进一步的了解,熟悉此游戏的后台运行情况。并且此次毕业

4、设计能将书本上所学的理论知识与实际相结合,同时也是对所学知识的一种检查,希望通过本次的毕业设计能使自己在程序的开发和设计上有新的认识和提高。本次毕业设计既锻炼了我们的实际动手能力,又在老师的指导下进行了一次模拟实际产品的开发,对于我们以后工作能力的培养具有重要意义。通过研究windows操作系统自带的扫雷游戏,我们可以发现在这个游戏中主要有以下几个关键的地方: 1.初始化问题,关于产生雷数的问题,即随机产生本局游戏中雷的总数,游戏的每一个级别产生的雷数不同,如何做到在不同的级别中产生不同的雷数。关于类的分布问题,在游戏中雷的分布对于每一个小区域是不同的,如何获取周围地区分布的雷数,在雷随机分布

5、之后,如何获取每个区域周围累的个数。 2.对鼠标事件的处理问题,既在游戏过程中对鼠标事件应如何做出反应。当单击鼠标左键时,软件对该事件的处理,是雷的处理和不是雷的处理。当单击鼠标右键时,系统做出的处理。 3.游戏中的另一个难点是,在游戏过程中,左右键同时点击数字,会有一个提示,这里的做法是如果是数字的格子,监听到左右键同时点击数字事件,查找这个格子周围的8个格子的红旗数,如果周围的红旗数正好是格子上的数字,那么就将除红旗之外的所有内容都显示出来。4.游戏规则、胜负判断方法,关于时间的计算。经过四年的大学学习,我对程序开发和设计、java语言等几种语言及eclipse等多个开发平台已经有了一定的

6、了解与认知,本次的毕业设计便是将书本上所学的理论知识与实际相结合,同时也是对所学知识的一种检查,希望通过本次的毕业设计使自己在程序的开发和设计上有新的认识并能有所提高。1.2开发工具的选用及介绍 通过在大学的学习,对多种语言及多个程序开发平台、软件有了初步的了解,例如:c语言、c+、vb、java、html等。vc+、visual basic 、microsoft.net、eclipse sdk等软件。 而eclipse 是一个被人们熟知的优秀java集成开发环境(ide),eclipse是众多java程序员的首选。和netbeans一样,eclipse也是一个完全免费的软件,而且还是开源的。

7、同时,eclipse不需要安装,解压出来即可使用,相当方便。故此选择eclipse作为此次毕设所用的开发工具。 但eclipse是使用java语言编写的。所以要运行eclipse必须在机器中安装jdk,遗憾的是,eclipse官方没有提供简体中文版的下载,只有英文版的,不过,经常使用eclipse习惯了之后就不会过于依赖于软件界面的语言了。eclipse不仅能开发java程序,还能开发jsp,c+等程序。eclipse官方将软件分成了普通java版,jee版,c+版。每个版本都针对相应的语言各司其职,其中jee版包括java的全部功能。 java development kit (jdk) 是

8、sun公司针对java开发员的软件开发工具包。自从java推出以来,jdk已经成为使用最广泛的java sdk(software development kit)。eclipse 是一个开放源代码的、基于 java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,eclipse 附带了一个标准的插件集,包括 java 开发工具(java development tools,jdt)。 eclipse最初是由ibm公司开发的替代商业软件visual age for java的下一代ide开发环境,2001年11月贡献给开源社区,现在它由非营利软件

9、供应商联盟eclipse基金会(eclipse foundation)管理。 2003年,eclipse 3.0选择osgi服务平台规范为运行时架构。 2007年6月,稳定版3.3发布。2008年6月发布代号为ganymede的3.4版。2009年7月发布代号为galileo的3.5版。eclipse是著名的跨平台的自由集成开发环境(ide)。最初主要用来java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如c+和python的开发工具。eclipse的本身只是一个框架平台,但是众多插件的支持使得eclipse拥有其他功能相对固定的ide软件很难具有的灵活性。许多软件开发商以ecl

10、ipse为框架开发自己的ide。eclipse 最初由oti和ibm两家公司的ide产品开发组创建,起始于1999年4月。ibm提供了最初的eclipse代码基础,包括platform、jdt 和pde。目前由ibm牵头,围绕着eclipse项目已经发展成为了一个庞大的eclipse联盟,有150多家软件公司参与到eclipse项目中,其中包括borland、rational software、red hat及sybase等。eclipse是一个开发源码项目,它其实是 visual age for java的替代品,其界面跟先前的visual age for java差不多,但由于其开放源码,

11、任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括oracle在内的许多大公司也纷纷加入了该项目,并宣称eclipse将来能成为可进行任何语言开发的ide集大成者,使用者只需下载各种语言的插件即可。 虽然大多数用户很乐于将 eclipse 当作 java ide 来使用,但 eclipse 的目标不仅限于此。eclipse 还包括插件开发环境(plug-in development environment,pde),这个组件主要针对希望扩展 eclipse 的软件开发人员,因为它允许他们构建与 eclipse 环境无缝集成的工具。由于 eclipse 中的

12、每样东西都是插件,对于给 eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。基于 eclipse 的应用程序的突出例子是 ibm 的 websphere studio workbench,它构成了 ibm java 开发工具系列的基础。例如,websphere studio application developer 添加了对 jsp、servlet、ejb、xml、web 服务和数据库访问的支持。 eclipse的主要组成eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。

13、它主要由eclipse项目、eclipse工具项目和eclipse技术项目三个项目组成,具体包括四个部分组成eclipse platform、jdt、cdt和pde.jdt支持java开发、cdt支持c开发、pde用来支持插件开发,eclipse platform则是一个开放的可扩展ide,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。eclipse platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。eclipse sdk(软件开发者包)是eclipse platform、jdt和pde所生

14、产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到eclipse platform中的工具。eclipse sdk由eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。eclipse项目生产的软件以 cpl发布,第三方组件有各自自身的许可协议。2. 游戏软件的总体分析与设计程序设计共设计了frame、frame1_start_actionadapter、bomb、bomb_actionadapter、bomb_actionadapter五个类。 (1) frame中为初始化和各项功能实现大类:共定义了方法fram

15、e()调用初始化方法、jbinit()初始化面板设置方法、zhongji()中级难度参数设定方法、chuji()初级难度参数设定方法、zidingyi()自定义参数设定、startbomb()开始布雷方法、countroundbomb()计算方格周围雷数方法、iswin()isnull(bomb)是否挖完所有雷方法、turn(bomb)翻开格子方法、actionperformed(actionevent)左键响应方法、mouseclicked(mouseevent)main(string)右键点击方法,main(string)主方法。(2) frame1_start_actionadapter

16、类:actionperformed(actionevent)方法为难度选择按钮监听方法(3) bomb类:布雷的各种属性方法,周围类属,是否为雷,是否被点击等属性。(4) bomb_actionadapter类:按钮设置监听(5) bomb_mouseadapter类:鼠标设置监听2.1软件功能需求分析 在设计之前,先来了解这款游戏的规则。扫雷就是要把所有非地雷的格子揭开即胜利;踩到地雷格子就算失败。游戏主区域由很多个方格组成。使用鼠标左键随机点击一个方格,方格即被打开并显示出方格中的数字;方格中数字则表示其周围的8个方格隐藏了几颗雷;如果点开的格子为空白格,即其周围有0颗雷,则其周围格子自动

17、打开;如果其周围还有空白格,则会引发连锁反应;在你认为有雷的格子上,点击右键即可标记雷;如果一个已打开格子周围所有的雷已经正确标出,则可以在此格上同时点击鼠标左右键以打开其周围剩余的无雷格。 1代表1的上下左右及斜角合计有一颗雷,依次轮推,2则有2颗,3则有3颗.在确实是炸弹的方格上点了标记,就安全了,不是炸弹的被点了标记,后面会被炸死。问号就是不确定这里有没有雷,不会存在点错了被炸死的状况。游戏的操作方法主要以鼠标为主,当鼠标指针对准未翻开的方块按下左键时即表示翻开方块,当鼠标指针对准未翻开的方块按下右键时即表示标示或疑示地雷,反复按下右键则方块会以未标示取消疑似二者关系不断循环。本程序为扫

18、雷游戏的实现,首先是要实现扫雷游戏的基本功能,根据扫雷游戏的玩法,设计程序,实现程序功能。软件功能架构图如下:高级按钮初级按钮中级按钮鼠标左键鼠标右键显示周围雷数取消标记标记此处是雷你输了!你赢了!2.2 软件界面设计游戏界面的设计导入swing包如下:import javax.swing.*实现代码如下:public void initgui() p3=new jpanel();b=bon;jmenubar menubar=new jmenubar();jmenu menu1=new jmenu(游戏);jmenu menu2=new jmenu(帮助);jmenuitem mi1=new

19、jmenuitem(初级);jmenuitem mi2 = new jmenuitem(中级);jmenuitem mi3 =new jmenuitem(高级);mi1.addactionlistener(this);menu1.add(mi1);mi2.addactionlistener(this);menu1.add(mi2);mi3.addactionlistener(this);menu1.add(mi3);menubar.add(menu1);menubar.add(menu2);p3.add(menubar);b1=new jlabel(bon+);a1=new intbon;bt

20、n =new jbutton(开始);btn.addactionlistener(this);b2=new jlabel(0);b3=new jlabel();btns=new jbuttonrow*col; p=new jpanel();p.setlayout(new borderlayout();contentpane.add(p);p.add(p3,borderlayout.north);界面如下: 2.3算法流程设计 流程规划大致上可以分为三个部分,分别为:画面初始、游戏者按下第一个方块和为非地雷方块时展开。画面初始时,以游戏者最后一次设定的地雷区大小为范围画出地雷区,但此时并未产生地

21、雷。当游戏者按下第一个方块时产生地雷资料并启动定时器,为何在游戏者按下第一个方块才产生地雷资料呢?其主要的用意在于不要让游戏者第一次就踩到地雷,这样在某种程度上可以提高游戏者游玩的气氛。接着就是如何判断按下的方块是非地雷时的处理,这也是整个游戏的技术核心,我们可以通过递归的观念来检查周边的方块是否含有地雷及是否继续往外翻开。开始 初始化等待按键 否右键左键 否 是 是第一次按下显示方块 否按下方块周围展开非地雷方块 是1. 布置地雷2. 启动计时按下方块是雷 否 是显示分数是否再玩 是结束 否3游戏软件的详细设计3.1游戏初始化我们可以清楚的看到,游戏界面主要分为两个主要部分:1. 计数及状态

22、区;2.地雷区。 1 设计整个游戏的结构,一般采用mvc作为整个游戏的结构,结构清晰又容易理解。 2 一般来说,做这些游戏的时候,我们先从底层的model开始做起。在这里,model部分就是由两张二维数组表组成,其中一张是mine,他上面放的就是一些最底层的数据,也就是说雷得分布情况。另外一张表是界面表chess,就是记录一些显示给用户的数据。 3 然后要做的是对两张表的初始化,这一步非常重要,对于第一张表mine的的初始化的方法为先随机n个不重复的雷,分布到mine表中,然后,对雷周围的格子进行赋值。这里我用到方法为:遍历所有的雷,将雷周围的格子加一,这样就能达到赋数值这个工作了。其中,这里

23、有一个难点,就是如何判定雷周围的八个格子,其实方法很多,但是大多代码繁琐,或者处理边界困难。这里我用到的方法是,计算两个格子之间的距离,如果与雷的距离为1或者根号2的话,就能确定该格子在雷的周围。然后是对chess进行初始化,chess就是界面表,也就是说,这里的数据是直接显示给用户看的。当然,初始化部分就是直接将赋值为板,就是等待去扫雷的状态。 4 然后就是扫雷部分,就是点击一个格子,利用jlabel的触发器将格子坐标传送到controller中去,controller中根据mine表判断点击的是什么,分三种情况,如果是雷,那就将底层的所有数据都赋到chess中,然后gameover。如果是

24、数字,那就直接把数字赋值到chess中去。如果是0,那就非常麻烦了,这也是这个游戏中的一个难点,玩过扫雷的同学应该都知道,点击0时,会散开周围所有的0.我这边的解决方法是,将点到的0的坐标加到list里面去,在遍历这个list,取出里面的坐标,查找他周围的8个格子,如果是0,且坐标不与list中的坐标重复,就将第二次查找到的坐标放到list里面,然后取list的下一个值,点击这个点,然后就是循环上面的语句。 5 游戏中的另一个难点是,在游戏过程中,左右键同时点击数字,会有一个提示,这里的做法是如果是数字的格子,监听到左右键同时点击数字事件,查找这个格子周围的8个格子的红旗数,如果周围的红旗数正

25、好是格子上的数字,那么就将除红旗之外的所有内容都显示出来。这样,游戏界面的初始化工作就基本完成了,下面就是地雷的随机产生。3.2雷区的布置当游戏界面初始化完成后,这时在地雷区中并未产生地雷,只有当玩家在地雷区中第一次点下左键后,才会在地雷区中随机的布置当前游戏难度下应该产生的地雷总数,其主要用意在于不让玩家第一次就踩到地雷,这样在某种程度上可以提高玩家游戏的气氛。具体实现如下所示:for(int i=0;ibon;i+) int p=1;int m=(int)(math.random()*row*col);while(p=1) int l=1; int j;for( j=0;ji&l=1;j+

26、) if(a1j=m) m=(int)(math.random()*row*col); l=0; if(j=i)a1i=m;p=0;b1.settext(bon+);b2.settext(0);3.3主要功能模块实现3.3.1 鼠标事件3.3.2 地雷及雷区表面探测情况3.3.3 清除未靠近地雷的方块 3.3.4 界面实现4游戏软件测试(软件测试有专门的一套方法,不是你这里几句话就可以的。这是一章的内容。)4.1. 本程序导入swing包:import java.awt.*;import java.awt.event.*;import javax.swing.*; 4.2.典型的测试数据的构建

27、由于本程序为扫雷游戏,测试的对象如下:(1)开始界面是否正确(2)周围显示的雷数是否正确(3)右键标志雷的剩余雷数是否正确(4)能否正确翻开周围无雷的格。(5)各功能,难度系数级别按钮实现是否能正确(6)第二次再进行游戏时能否正确清空之前的数据和初始化以及正常运行。4.3.测试与运行情况如图各功能以及数值计算与预计结果相同。均正常。(1)开始界面及初级画面 (2)左右键点击的两个功能: (3)高级画面 :(4)中级画面:(5)踩雷画面(6)胜利画面附录:源代码在程序代码基本完成后,经过不断的调试与修改,最后测试本次所设计的扫雷游戏能够正常运行,在基本功能与画面上与windows自带的扫雷游戏没

28、有太大差别,没有出现明显的错误和漏洞,但是在一些细节方面仍然需要完善,比如在游戏中可以加入一些声音的提示,在游戏完成和失败的时候可以弹出一些小的flash动画,还有就是可以加入一个扫雷英雄榜等等。总的来说本次设计在功能上已经基本达到要求,其他细节方面有待以后完善。大概多少烦得很团结他环境结 论毕业设计是本科学习阶段一次非常难得的理论与实际相结合的机会,通过这次比较完整的一个程序的设计,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的专业基础知识,解决实际问题的能力,同时也提高我查阅文献资料、对程序整体的把握等其他能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富。这是我们都希望看到的也正是我们进行毕业设计的目的所在。虽然毕业设计内容繁多,过程繁琐但我的收获却更加丰富。各种组件的运用,各种算法的应用,各种控件的利用我都是随着设计的不断深入而不断熟悉并逐步掌握

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论