华中科技大学计算机科学与技术专业毕业论文.doc_第1页
华中科技大学计算机科学与技术专业毕业论文.doc_第2页
华中科技大学计算机科学与技术专业毕业论文.doc_第3页
华中科技大学计算机科学与技术专业毕业论文.doc_第4页
华中科技大学计算机科学与技术专业毕业论文.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

毕 业 论 文题 目扫雷游戏学 校专 业计算机科学与技术学 号姓 名指导教师2014 年9 月18日摘 要随着Internet的迅速崛起,信息网络化成为时代的主题。许多行业在经营过程中对计算机技术的依赖程度不断增强,而计算机也成为了当今社会不可或缺的一部分。人们用计算机来工作、通讯、聊天、视频、游戏、娱乐等,在如此快速的社会里,每一个人都有来自各方面的重大的压力,而此刻游戏也就成了我们每个人用于释放压力的首选。近年来,随着网络的发展,游戏便成为了很多人关注的焦点。与传统的影音产业一样,游戏产业也是娱乐行业的一个重要组成部分,基于数字化的网络游戏更让人们找到了前所未有的感受,并已经成为全球互联产业的热点。扫雷游戏是windows操作系统自带的一款小游戏,在过去的几年里windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大。但这款小游戏还是保持原来的样貌,可见人们对它的喜爱程度并非一般,不过也有很多人对这款游戏不是太了解。本系统的开发是以.NET作为框架,VS作为开发工具,采用C#程序设计语言的开发扫雷游戏。论文首先阐述了扫雷游戏的开发,然后对系统进行了较详细的需求分析,最后对系统测试和分析,该系统表现出来一定的可玩性和趣味性,具有一定的价值。关键词:扫雷游戏;C#AbstractWith the rapid rise of the Internet, information network has become the main theme of the times. Many industries in the process of operation depends on the unceasing enhancement of the computer technology, the computer has become a part of todays society is an indispensable. People use computers to work, communication, chat, video, games, entertainment, in such a rapid society, everyone has a great pressure from all sides, and now the game has become each and every one of us to release the pressure of choice.In recent years, with the development of network, the game will become the focus of attention of many people. As with traditional audio and video industry, an important part of the game industry is the entertainment industry, the digital network game let the people found a hitherto unknown feeling based on, and has become a hot spot of global Internet industry.Minesweeper is a Windows operating system comes with a small game, in the past few years windows operating system through several times of regeneration, becomes more and more large, complex, the function is also more and more powerful. But the game is still maintained the original appearance, visible people love the extent of it is not common, but there are a lot of people in the game is not too understand.The development of this system is based on .NET as framework and VS as a development tool, using C# programming language to develop the Minesweeper game. This paper describes the development of the Minesweeper game, and then discusses the system demand analysis in detail, finally, the system is tested and analysed, and shows certain playability and interesting, it has a certain value.Key words: Minesweeper game ;C#目 录摘要IAbstractII1 绪论1.1 课题背景11.2 课题研究意义11.3 国内游戏外研究情况21.4 课题研究目的32 开发环境与相关技术2.1 C# 技术42.2 VS 介绍43 系统需求分析及设计3.1 需求分析63.2 可行性分析73.2.1 经济可行性83.2.2 技术可行性83.2.3 管理可行性83.2.4 操作可行性83.2.5 法律可行性93.3 性能需求93.3.1 系统处理的精确性93.3.2 系统的可扩展性93.3.3 系统的易用性93.3.4 系统的标准性93.4 可靠性和可用性103.5 运行平台和操作系统选择103.6 系统设计103.6.1 系统功能103.6.2 类的实现103.7 开发方法选择123.7.1 结构化生命周期法133.7.2 原型法简介143.7.3 本系统开发方法的选择144 系统实现4.1 基本实现思路164.1.1 总程序流程图164.1.2 界面思路174.1.3 程序思路174.2 代码实现184.2.1 随机布雷功能184.2.2 获取四周所有方格功能194.2.3 递归扫雷功能204.2.4 非雷区展开功能214.2.5 显示雷区所有方格功能224.2.6 鼠标事件235 系统测试5.1 测试目的和目标245.2 软件功能的测试24结论26致谢27参考文献281 引言1.1 课题背景随着网络技术的发展,其产物之一游戏也日益受到人们的关注。中国的网络游戏虽然相比别的国家起步较晚,但发展十分迅速。它不仅仅是互联网和社会的重要组成部分,而且深刻的影响着人类的生活。游戏已经成为许多人消遣娱乐的主要途径,使用过微软操作系统的用户,对扫雷这款游戏都不会陌生,因为这是微软操作系统中自带的一款游戏,而且这项游戏操作简单,老少皆宜。整个游戏在数字的提醒下进行雷的抓获,充满了紧张但是快乐的气氛,游戏会给用户带来快乐也给用户释放一下各方面的压力,游戏的设计过程能不断地训练使用者的逻辑思维,对于脑力要求越来越多的现在人来说,这一款游戏能让我们在适当的时候得到放松和享受,更可以不时的检验下自己,所以我们不难发现基于扫雷的一些升级游戏在市面上也越来越多了。通过研究Windows操作系统自带的扫雷游戏,我们可以发现在这个游戏中主要有以下两个关键的地方:第一个是初始化问题,包括随机产生本局游戏中雷的总数,雷的分布对于每一个小区域如何获取周围地区分布的雷数等等。第二就是对鼠标事件的处理问题,既在游戏过程中对鼠标事件应如何做出反应。1.2课题研究意义近两年的大学辅修生活也即将进入尾声了,经过两年的学习,我对计算机方面也有了一定的了解和认知,本次的毕业设计正是对我的阶段性学生生涯的一个检验,同时也是一个将自己所学与实践相结合的机会,我希望通过这次的毕业设计能使自己在设计程序和开发程序方面有一个新的认识和提高。本次毕业设计既锻炼了我们的实际动手能力,又在老师的指导下进行了一次模拟实际产品的开发,对于我们以后工作能力的培养具有重要意义。在计算机逐步渗入社会生活各个层面的今天,计算机已经成为人们日常生的一部分,它遍及世界的大街小巷,越来越多的人使用计算机办公。拥有这种利器,我们能方便而又快捷地解决身边的各式各样的问题,同时计算机在人们娱乐减压方面也是战功卓越,成为了当今快节奏生活的一种调剂品,有了它,人们可以劳逸结合,更加高效的创造生活的价值。扫雷游戏是Windows操作系统自带的一款益智类小游戏,在过去的几年之中,Windows操作系统换代更新了数次,系统变得越来越庞大、复杂,功能也是越发强大、稳定,可是这款小游戏仍然保持其原有的面貌,可以看得出,这款小游戏是多么的深受大众的热爱。本次的毕业设计,我想尝试着依附vs2010作为开发工具,利用C#语言来开发一款类似“扫雷游戏”的小游戏。通过研究Windows操作系统自带的扫雷游戏,我们可以发现在这个游戏中主要有以下两个关键的地方:第一个是初始化问题,包括随机产生本局游戏中雷的总数,雷的分布对于每一个小区域如何获取周围地区分布的雷数以及实现当按下坐标点,能够扫出周围的一片非雷区的功能等等。第二就是对鼠标事件的处理问题,即为当用户按下左键或者右键的时候,执行相应的动作。这次的毕业设计对于我这个只学过C语言的新手来讲,是一次严峻的考验,同时也是一次难得的考验自己的机会。我希望自己能够从中学习到更多新的知识和一些编程的基本思想来丰富我的知识层面,可以为我以后的编程生涯奠定一些理论依据。同时我也将尽我所能的将自己两年内所学的运用到实际,与实践相接轨,把理论转化成真正属于自己的东西。总的来讲,本次课设既锻炼了我们的实际动手能力,又是一次在老师的指导下进行的一次模拟的实际产品的开发,对于我以后工作能力的培养具有非常重要的意义。1.3 国内外游戏研究情况 在这个数字出版产业发展的迅猛时代,作为数字出版业核心之一的游戏出版产业是日益红火。生活在如今飞速发展的时代,我们的步子是越来越快速了,人心日益疲惫,这个时候,游戏就成为我们生活不可或缺的一款调剂品,各种小游戏也是纷纷争相出炉,出现在我们生活的四周。目前游戏业已经以每年超越200亿美元的产值成为全球最大的娱乐事业,继美国、日本、韩国之后,越来越多的国家也开始重视游戏产业的庞大商机,而以国家力量主导发展电子游戏产业。现在,北美的电子游戏产业收入已经接近了整个电影产业的收入,这就足以证明游戏行业潜力的巨大。中国游戏行业起步相对国外较晚。但已形成巨大的产业规模。游戏出版行业的迅速成长,给更多的人们带来了丰富多彩的互动娱乐体验。随着产业环境的改善,企业实力的增强,中国游戏行业还将有更广阔的发展空间。1.4 课题研究目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是对本课程学习后进行的一次全面而综合的练习。本次课程设计的目的主要有:(1).培养综合运用所学知识独立完成课题的能力。(2).更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 (3).提高对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。 (4).培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。(5).培养从资料文献、科学实验中获得知识的能力,提高从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 (6).对掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。(7).巩固和加深学生对C#的基本知识的理解与掌握。(8).掌握C#语言编程和调试的基本技能。(9).运用C#语言对程序的简单设计。(10).掌握程序设计说明文档的能力与技巧。(11).让学生掌握较为简单的算法分析能力。2 开发环境与相关技术本系统是采用C#编程技术,在Windows 7操作系统环境下,采用VS2010开发工具进行设计与开发的C#扫雷游戏。2.1 C#技术 C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。C#是一种安全的、稳定的、简单的、优雅的,由C和C+衍生出来的面向对象的编程语言。它在继承C和C+强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C+的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。 C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。C#使得C+程序员可以高效的开发程序,且因可调用由 C/C+ 编写的本机原生函数,因此绝不损失C/C+原有的强大的功能。因为这种继承关系,C#与C/C+具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。2.2 VS介绍Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight 及Windows Phone。目前VS2010有五个版本:旗舰版、专业版、高级版、学习版和测试版。区别于其他几个版本,VS2010会使你有一种回归VC6的感觉,例如ClassWizard等又出现了。而且可以自定义开始页;新功能还包括: 1.能够支持Office; 2.多显示器支持;3.C# 4.0中的动态类型和动态编程;4.使用Visual Studio 2010的特性支持TDD;5.C+ 0x新特性;6.Quick Search特性;7.IDE增强;8.使用Visual C+ 2010创建Ribbon的界面;9.新增基于.NET平台的语言F#;Visual Studio 2010 提供了高级开发工具、调试功能、数据库功能和创新功能,帮助在各种平台上快速创建当前最先进的应用程序。Visual Studio 2010和.NET Framework 4.0在五个方面有较大的创新点:民主化的应用程序;显著地改进了开发者最核心的开发体验;提供工具软件和服务平台,创造令人惊奇的解决方案;跨部门应用;高效的开发环境等等。开发人员能够利用这些丰富的客户端和服务器端框架轻松构建以客户为中心的 Web 应用程序,这些应用程序可以集成任何后端数据提供程序、在任何当前浏览器内运行并完全访问 ASP. NET应用程序服务和 Microsoft 平台。3 系统需求分析及设计在软件设计与开发过程中,需求分析是必不可少的。当接到一个系统开发任务时,不应该直接进行开发工作,而是应该先对所需要开发的系统进行一番了解。开发人员需要知道这个系统将来是要干什么的,为什么样的人群服务。从这些入手一步一步了解系统,才能明确系统所需要的功能。这样,开发人员便可以找到开发的方向。把握住开发方向,才能设计出人性化的系统,而不是那些粗制乱造不切和实际的系统。3.1 需求分析 相信大多数使用Windows操作系统的使用者,对这款扫雷游戏都不陌生。这款游戏不止操作简单,规则也不难,再加上游戏速度的控制机制得宜,让整个游戏在操作过程中充满了快乐与紧张的气氛。除了游乐当中能带给使用者快乐之外,游戏的设计内容无形中也不断训练使用者的逻辑思考能力,对于依靠高度脑力工作的现代人,都可以通过这个游戏,不时的检验一下自己,所以我们不难发现,在各种可携带的电子产品上都有这款游戏的踪影。在设计之前,我们不妨先来了解一下这款扫雷小游戏的运作规则。游戏的目标是,在不掀开任何藏有地雷的方块情况下,以最快的速度找出所有的地雷。如果在掀开方块的过程中,不小心翻开(踩到)藏有地雷的方块,则宣告游戏失败(游戏结束),惟有将整个所有不含地雷的方块掀开,同时将所有含有地雷的方块进行标记,游戏才算成功。游戏的操作方面主要以鼠标为主,当鼠标指针对准未翻开的方块按下左键时即表示翻开方块,当鼠标指针对准未翻开的方块按下右键时即表示标示或疑示地雷,反复按下右键则方块会以未标示标示疑似三者关系不断循环。游戏者可以通过地雷区内的数字提示了解以数字为中心的其周边八个方格内所含的地雷数,假若翻开的方块显示数字“2”,则表示以其为中心的周边方块内藏有2个地雷。当按下的方块不是地雷,且周边八个方块也都没有地雷时,方块会以被翻开方块的八个方向将空白方块翻开。一个典型的扫雷游戏主要功能有: 1. 雷区布置模块:主要是实现雷区的布置。2. 随机布雷模块:游戏中的地雷是随机铺设的,可以调用随机发生函数生成随机数。利用随机数去除最大行数或最大列数,得到放置地雷行列的坐标。然后分别把地雷放置到不同行列和列数的格子中。3. 自动打开周围不是地雷的格子模块:在游戏中,当玩家单击的格子周围没有地雷格子时就需要程序自动地打开以提高玩家的效率。其实现是通过递归的方法不断地打开当前格子周围地雷是0的格子来实现的。4. 获得周围地雷个数模块:在游戏中如果玩家打开一个格子时,如果当前格子不是地雷时,则会显示其周围相邻方格(即上下左右以及斜对角的方格)地雷的总个数。要实现这个功能则要通过当前周围33范围的数组。当找到一个元素状态的地雷时,就把记录增加1,直到9个格子全部找完。5. 当玩家打开一个格子时,就对当前格子进行判断。如果是地雷,说明玩家不幸踩雷游戏以失败告终。而如果不是地雷,就对玩家选中的格子周围表示进行判断,如果有判断错误的格子,也说明玩家失败游戏结束。6. 游戏胜利的判断:通过遍历整个地雷数组,查找是否全部的地雷格子已经被表示或者找出来。如果已经全部找出来或被标示出来,那么则玩家胜利。反之,说明玩家未胜利,需要继续游戏。7. 玩家输入的设计与实现:a) 接受玩家在界面上的鼠标左键输入信息。b) 对当前鼠标的坐标进行判断。c) 当在按钮区时,调用控制按钮的处理函数。d) 当在地雷区时,如果当前游戏的状态是等待输入或者正在运行时,就得到当前所有选中的格子指针;反之则不会响应。e) 在得到格子指针后,对选中的格子进行判断,如果是正常的格子,即未被打开过的格子,就转到了格子处理函数;如果不是正常的格子,则不进行响应。f) 实现鼠标右键的处理,前三步同鼠标左键的处理,第四步处理为如果当前格子的状态进行变化。其变化规则为:标记(旗子)、未知(?)、正常。3.2 可行性分析系统的可行性分析可以从经济可行性、技术可行性、管理可行性等几个方面进行可行性分析。3.2.1 经济可行性 整个游戏系统项目因为是个人娱乐的开发,加上整个项目较为简单,几乎是不存在经济的压力,不需要耗费大量的设备和器材,硬件上只需要一台个人笔记本或者公共电脑,然后网上下载相关的运行平台即可。3.2.2 技术可行性虽然对于我这个新手来讲,具有很大的挑战,但是在现有的条件和技术支持下,我相信基本的功能和目标应该能够达到,在老师要求的条件和规定的时间内,基本能完成整个小游戏项目开发。利用VS2010开发的仿Windows扫雷游戏,其中大量的运用了循环技术,界面是通过使用button空间与label控件来实现的,还采用了定义新类从而生成雷区。整个软件的实现是结合了大量的循环方法,利用循环来生成雷区并且在窗体上显示,利用循环实现在雷区控件上随机布雷,以及雷区展开等等。3.2.3 管理可行性从管理的角度来分析系统的可行性来讲,作为一个娱乐游戏系统,按照常理来讲,必须有系统的管理员来对系统的一些基础数据进行管理,但是由于我们这个扫雷游戏比较简单,一般也不会出现什么大的数据和维护的问题,所以在管理上基本不需要专业人员来对这个小游戏进行维护管理。3.2.4 操作可行性扫雷小游戏自诞生以来,深受广大群众热爱,游戏操作简单方便,整个游戏的操作只需要鼠标就可以完成。当然,如果我们想要更好的胜利体验,那么整个小游戏的基本规则是必须了解的。不过好在现在科技发达,网络便捷,只需要我们上网,点击几下键盘,就可以搜索出我们这款小游戏的操作规则。相对而言,这还是很简单易于上手的一款一直小游戏,所以操作可行性上几乎是没问题。3.2.5 法律可行性因为这个扫雷小游戏的开发,仅供个人娱乐,不参与任何利益问题,因此小游戏项目的开发将不会侵犯他人、集体和国家的利益,不会违反任何政策和法律,所以法律可行性上基本没有问题。3.3性能需求扫雷小游戏必须能够基本实现扫雷逻辑,能够较为安全、稳定、可靠的运行,所以对整个项目有如下的几个性能小要求。3.3.1 系统处理的精确性系统处理的精确性是是整个扫雷小游戏的核心要求。因为一个游戏如果连基本的实现逻辑都无法保证,那么后面其他所有的需求都是纸上谈兵,所以在整个项目开发的时候,最为重要的是系统逻辑实现可靠性的保证。3.3.2系统的可扩展性系统的可扩展性指的是,在整个开发的过程中应该保证模块之间的独立性和稳定性,在我们开发完这个扫雷小游戏完成之后,假如后面的开发者想到更好的创意,能够在我们原有的项目下继续的二次开发或者多次开发,以完善整个小游戏,使得扫雷小游戏拥有更多的趣味性和可玩性,那么说明整个项目是可扩展的。3.3.3 系统的易用性整个扫雷小游戏能够保证任何年龄段的使用者来进行操作,极其简单,容易上手。3.3.4 系统的标准性系统在设计与开发使用过程中涉及到相应的计算机软硬件。系统必须符合相应的标准。3.4可靠性和可用性需求扫雷小游戏基本不出现任何逻辑或其他的错误,能够保证可靠、可行。3.5 运行平台和操作系统选择本次扫雷小游戏的开发选择Windows 7操作系统,运行的平台是VS2010。对于游戏者来讲,目前市场上的电脑基本都能够完美运行该扫雷小游戏,因此不存在配置要求。3.6 系统设计根据前面章节需求分析的情况,结合本系统所要实现的功能,具体设计方案如下。3.6.1 系统功能通过对需求的分析,总结一下扫雷游戏的主要设计的类有三个:Pane、MineField、MainForm等等。1. MainForm是主控窗体,负责项目的启动和关闭;并且负责协调内部之间各个组件模块的协调工作。2. Pane是一个方格的封装,它是继承了.NET中的Button属性,是雷区重要组件;它还表示一个方格的当前状态,以及是否布雷等信息。3. MineField是整个雷区的封装,是整个扫雷游戏的核心组件;方格的布局以及地雷的分布是由它负责的;并且还控制玩家的基本操作和正确响应。在这里还有若干个辅助类:ExceptionHandler、PaneState以及各种资源相关等等。1. ExceptionHandler是负责统一处理系统中的异常。2. PaneState是一个枚举,表示的是Pane中的各种状态。3. Program是全局的入口。4. Resource的目录下是所有程序所需的图片资源,在这里资源将作为内嵌资源,通过Properties来进行访问。3.6.2类的实现1. Panea) 功能描述Pane是一个方格的封装,是雷区重要的组件部分;它表示一个方格的当前状态,以及是否布雷登信息。b) 成员表3.6.2 Pane类的属性名称可见性返回值功能描述AroundMineCountpublicint获取或设置当前方块周围的地雷数量HasMinepublicbool获取或设置当前方块内是否埋有地雷StatepublicPaneState获取或设当前方块扫雷的状态表3.6.2 Pane类的方法名称可见性返回值参数功能描述Markpublicvoid无把当前方块标记为“有雷”状态,即:插上一个小红旗。Openpublicvoid无打开该方块。打开后如果如果有雷,则显示地理图标;否则如果周围有相邻的地雷,则显示地雷数量。Resetpublicvoid无恢复关闭状态,即:取消Mark()的操作结果。2. MineFielda) 功能描述MineField是雷区的封装,是游戏的核心组件;它负责方格的布局以及地雷的分布;并控制玩家的基本操作以及正确的响应。b) 成员属性:无表3.6.2 MineField类的方法名称可见性返回值参数功能描述DisplayAllpublicvoid无明示雷区的全部方块里的内容。当踩雷以后,给玩家显示所有地雷位置。DisplayAroundpublicvoidpane:Pane明示与给定方格相关联的无地雷的方格。玩家点击一个无雷方格后使用。Initpublicvoid无初始化雷区。布局方格并随机分布地雷。表3.6.2 MineField类的事件名称可见性Handler功能描述MineSweepingSuccessfullypublicMineSweepingSuccessfullyEventHandler当玩家扫雷成功时引发。MineSweepingFailedpublicMineSweepingFailedEventHandler当玩家扫雷失败时引发,如踩雷。3. MainForma) 功能描述MainForm是主控窗体,负责项目的启动和关闭;并协调内部各个组建模块的协调工作。b) 成员属性:无方法:无4. ExceptionHandlera) 功能描述ExceptionHandler负责统一处理系统中的异常。b) 成员表3.6.2 ExceptionHandler事件的方法名称可见性返回值参数功能描述OnExceptionpublic staticvoidex: Exception根据Exception类型显示不同的错误信息。3.7开发方法选择 每一种开发方法都是要遵循相应的开发策略。任何一种开发策略都要明确以下几个问题:l 系统要解决的问题,如采取何种方式解决组织管理和信息处理方面的问题。 l 系统可行性研究,确定系统所要实现的目标。l 系统开发的原则。l 系统开发前的准备工作。l 系统开发方法的选择和开发计划的制定。针对己经确定的开发策略选定相应的开发方法,是结构化系统分析和设计方法,还是选择原型法或面向对象的方法。开发计划的制定是要明确系统开发的工作计划、投资计划、工程进度计划和资源利用计划。下面简要介绍下结构化生命周期开发方法和原型法。3.7.1结构化生命周期法 目前较为流行的MIS开发方法是结构化生命周期法,其基本思想是:用系统的思想和系统工程的方法,按用户至上的原则,结构化、模块化地自上而下对生命周期进行分析与设计。用结构化生命周期开发方法开发一个系统,将整个开发过程划分为五个依次连接的阶段:1. 统筹规划阶段,主要任务是明确系统开发的请求,并进行初步的调查,通过可行性研究确定下一阶段的实施。2. 系统分析阶段,主要任务是对组织结构与功能进行分析,理清业务流程和数据流程的处理,并且将业务流程与数据流程抽象化,通过对功能数据的分析,提出新系统的逻辑方案。3. 系统设计阶段,主要任务是确定系统的总体设计方案,划分子系统功能,确定共享数据的组织,然后进行详细设计,如处理模块的设计、数据库系统的设计、输入输出界面的设计和编码的设计等。该阶段的成果为下一阶段的实施提供了编程指导书。4. 系统实施阶段,主要任务是讨论确定设计方案、对系统模块进行调试、进行系统运行所需数据的准备、对相关人员进行培训等。5. 系统运行阶段,主要任务是进行系统的日常运行管理,评价系统的运行效率,对运行费用和效果进行监理审计,如出现问题则对系统进行修改、调整。这五个阶段共同构成了系统开发的生命周期。结构化的生命周期开发方法非常严格系统的区分了开发阶段,在这其中每一个阶段都对文档的编写极其重视,这样做的好处是,开发过程住可能出现的一些问题进行及时的纠正,避免把错误带到下个阶段,但是使用这种方法,肯定会造成开发周期过长,造成大量的人力和物力的指出,超出预算。并且最重要的一个问题,一旦开发过程中客户的需求发生了变化,系统调整的难度会很大。3.7.2原型法简介 原型法在系统开发过程中也得到不少应用。原型法的基本实现思路是开发人员首先根据拿到的需求,对需求进行整理和分析,得出自己对需求的一个认识,然后通过现有的资源,构造出一个与需求相符的的系统原型,然后拿着原型与客户进行协商,反复修改原型直至用户满意。 原型法会使人们对需求有了循序渐进的认识和了解,是一个不断学习改进的过程,这样可以使系统的开发更有针对性。原型法从原理到流程都是十分简单的,且倍受推崇,有着传统方法无法比拟的优越性,它有如下特点:l 原型法符合人们认识事物的规律人们认识事物不可能一次就完全了解;认识和学习的过程是循序渐进的;人们对事物的描述都是受环境的启发不断完善的;人们改进一些事物比起创造来要容易。l 原型法有利于项目的开发者和用户之间的交流原型提供了具体的、看得见、摸得着的模型,减少误解和不确定性;原型启发了人们的认识,其直观性使之能准确描述需求;原型通过具体的系统,能够缩小开发者和用户对问题的理解与认识的差距;原型模型能够及早暴露系统存在的问题。l 实际的原型为准确认识问题创造了条件原型的直观性、感性特征易使用户理解系统的全部含义;讨论的原型是开发者与用户共同确认的;讨论问题的标准是统一的;信息的反馈是及时的。l 能充分利用最新的系统开发环境利用最新的软件工具,建立系统的开发、生成环境;计算机技术发展使系统局部修改或重新开发成为可能;新技术加快了速度,减少了费用,提高了效率。l 原型法将系统的调查、分析、设计融为一体用户一开始就能看到系统实现以后的具体样子,消除了心理负担,打消了对系统是否可实现、是否适用等的疑虑;为用户参与开发过程创造了一个良好的条件;提高了用户参与系统开发的积极性。3.7.3本系统开发方法的选择原型法和结构化生命周期法开发软件各有其优点。原型法的假设模式相比较结构化生命周期法老说,能够提供更开明的策略,对于一些比较较难预先定义的问题,可以把原型开发过程作为结构化生命周期法的一个子阶段。通过具体的分析,本系统采用的设计方法为:结构化生命周期法和原型法相结合的方式。总体遵从结构化生命周期法进行系统分析和设计,在必要的时候采用原型法。具体理由如下:l 结构化生命周期法虽然在工作量上来说比较复杂,但是结构化生命周期法是对系统开发过程的管理比较规范的方法。按照系统工程理论建立起来的结构化生命周期法,把系统开发过程分为系统分析、系统设计、系统实施、系统运行维护四个阶段,每个阶段都有明确的目的和任务,并产生一定格式的文档作为下一个阶段的依据,避免了在系统开发中急功近利的做法。l 由于时间有限,加上本次的扫雷程序较为简单以及前人有很多不同版本的扫雷,如果仅使用结构化生命周期的方法势必会影响时间上的要求,因此考虑到结合快速的原型法。l 原型法适宜事先难于确定系统要求或系统功能要求,在系统研制过程中可能发生重大变化的应用系统。原型法的优点在于设计系统模型时,只须提出系统的基本功能,系统功能的扩充和完善是在实施过程中初步实现的,因而比较容易适应不断变化的环境,缩短系统开发时间。原型分析法的不足之处是在系统开发中会有一些不规范的现象出现。因此,如果是要开发一个较为齐全的大型系统,例如管理系统的话,建议还是用生命周期法,再次鉴于我们此次毕业设计的课题较为简单,所以综合考虑,我在本次毕业设计重点是侧重原型法。l 生命周期法和原型法相结合的方法关键在于,在进行系统开发时,整体的规划,系统分析划分均要用生命周期法。在系统分成若干个具体的子系统后采用快速原型法。通常,系统的原型并不是一次建成的,而是由一个初始原型开始,通过逐步细化达到满意为止,原型法与系统开发生命周期(SDLC)法相结合,可以解决那些不确定的用户需求,因而加快了SDLC的进度。4 系统实现4.1 基本实现思路 4.1.1总程序流程图如下图1所示,作出整个扫雷小游戏的流程图:实现功能包括:布局格子,布雷,判断游戏完成或失败,鼠标事件(左键单击、右键单击)以及递归扫雷等等。1. 如果单击了鼠标左键,则判断: 如果鼠标单击了“重新开始”的按钮,则游戏重新开始。 如果单击了方格,判断该格子里有红旗,则按键无效。如果单击的格子没有显示过数字或空白,那么需要判断判断:如果是地雷,游戏结束,显示地雷分布;如果不是地雷,则统计该格子周围(8 个方向)的地雷数,如果周围地雷数为0, 调用递归函数处理周围格子的情况,显示周围地雷数或空白。如果单击的格子周围地雷数不为0, 则显示周围地雷数,将处理过的格子作标记。如果所有格子处理完毕,游戏胜利,显示胜利信息。 2. 如果单击了鼠标右键,该格子没有红旗,则显示红旗。如果有红旗,再击右键,则红旗消失。4.1.2界面思路本程序是用C#的控件设计的,首先在程序初始化时界面全部置为空,在按了扫雷界面上的“重新开始”按钮之后开始给界面重新布局。 4.1.3程序思路 扫雷程序主要用了一个二维数组表示,数组的每一个元素是结构体类型,结构体中的num 成员代表格内当前处于什么状态,值为1 表示有雷,值为0 表示已经变成空白格或者显示过数字,aroundnum 成员统计每个格子周围有多少地雷,flag 变量主要是鼠标右键测试的标志,如果flag 为1 则表示格子显示红旗,这样鼠标左键点在这个格子中将无效。 算法的重点是一开始统计好每个格子周围有多少地雷,然后当鼠标左键点在没地雷的格子上时进行两种判断,如果格子周围没地,雷就先在原来的格子位置显示空白格,然后用递归的方法同样判断周围的8 个格子;如果格子周围有地雷,就在该格子上显示具体的雷数。 在递归判断8 个格子时,如果格子上有地雷或者格子已经显示过雷数或者空白格,以及格子上有红旗标志的话,就不再对格子进行任何判断。4.2 代码实现4.2.1随机布雷功能在给程序布雷时思路是这样的,首先给出界面全部为无雷的状态,然后根据地雷数和随机函数,在for循环的作用下一个一个的将地雷随机分布到雷区。其代码如下: / / 随机布雷 / / 地雷的数量 private void LayMines(int mineCount) Random ran = new Random(); for (int i = 0; i mineCount; i+) int index = ran.Next(0, this.Controls.Count); Pane pane = (Pane)this.Controlsindex; pane.HasMine = true; 4.2.2获取四周所有方格功能即获取小方块区域相邻8个区域的方格,为后面的递归扫雷以及非雷区的展开提供一个理论基础。其主要思路通过将边长上的方格数目转化成坐标的形式,然后利用遍历函数来表示整个雷区中的每个方格都能获取四周所有方格。其具体流程图如下:4.2.3递归扫雷功能 即获取当前方格四周所有的地雷总数,主要思路是依据上面的获取方格四周所有方格的方法,加上遍历函数作用,计数出每个方格四周所包含的地雷总数。其具体流程图如下:4.2.4非雷区展开功能 即非地雷的区域自动一起打开,其思路是当方格四周所有方格都没有埋有地雷的时候,当前方格四周所有方格同时打开;当当前方格四周埋有地雷,那就只打开当前方格,然后加上遍历算法实现真个雷区非雷区展开。 其流程图如下:4.2.5显示雷区所有方格功能即雷区中所有的方格展开,当玩家不想继续这个游戏的时候就可以按“显示雷区”来结束游戏 。其流程图如下:4.2.6鼠标事件这一步是整个程序的核心事件,通过鼠标事件来控制整个游戏的开始、结束、扫雷以及标记等等一系列的动作,所以来将它是整个程序至关重要的一环。处于简化的考虑,本次的鼠标事件只有左、右键两个功能,不包括同时按下左右键的功能。其代码如下:5 系统测试5.1 测试目的与目标在此系统功能大部分功能可以实现的时候,便需要开始考虑进行系统测试工作了。通过对系统进行测试可以找出系统中隐藏的一些错误。在发现错误以后需要及时进行修正,以保障系统的长期稳定运行。这个过程必不可少。 测试的软件模块的基本功能,可以继续进行,尽可能提高软件的稳定性。5.2 软件功能的测试1. 为了减压是否实现了扫雷的主要功能,需要对开发的扫雷小游戏进行功能测试:a) 实现难度选择功能。b) 实现左键探雷功能。c) 实现右键标记功能。d) 实现重新开始功能。2. 在扫雷游戏功能测试的过程中,我遇到了以下问题和相应的解决方案:a) 当整个扫雷游戏开始编程的初期,就遇到了比较棘手的问题,在雷区中布局方格的位置的时候,我发现它并非像我预想那样将所有的方格平铺满整个雷区,莫名的出现了很大一片的空白区,仅仅只有一列是完全铺满了方格。由于我本身编程功底就不是很扎实,当时我到处翻书和上网搜寻,都无法解决。后来由于整个游戏还只是编程的初期,我想着要不重新再来一次。原理还是一样的,可是第二次却奇迹般的完全展开了,后来我自己稍微的分析了一下

温馨提示

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

评论

0/150

提交评论