当前位置: 首页 > news >正文

泉州做网站的品牌营销咨询公司

泉州做网站的,品牌营销咨询公司,福州推广seo排名,天津网站seo营销模板关于俄罗斯方块项目源码.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89300281 基于Java的俄罗斯方块游戏的设计与实现 摘 要 俄罗斯方块是一款风靡全球#xff0c;从一开始到现在都一直经久不衰的电脑、手机、掌上游戏机产品#xff0c;是一款游戏规则简单… 关于俄罗斯方块项目源码.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89300281 基于Java的俄罗斯方块游戏的设计与实现 摘  要     俄罗斯方块是一款风靡全球从一开始到现在都一直经久不衰的电脑、手机、掌上游戏机产品是一款游戏规则简单但又不缺乏乐趣的简单经典小游戏上手容易适用范围广泛人所共知。俄罗斯方块游戏简单的基本规则是有小方块组成的7种不同的规则图形陆续从屏幕上落下玩家操作移动使其下落拼出一条完整的横条随即会消失玩家得分游戏等级提高当没有被消除的图形堆积到屏幕顶端时游戏结束。     俄罗斯方块游戏最初是由俄罗斯人阿列克谢·帕基特诺夫在1984年开发的休闲小游戏曾几何时它创造了无可匹敌的商业价值影响了一代休闲小游戏的开发与产业链。随着信息时代科技时代的不断发展和变化计算机已经普及到每一个人的生活中在繁忙的工作生活中这一类休闲小游戏给人们带来了些许的放松。     这篇论文详细的描述分析了经典传统的俄罗斯方块实现的基本思路和一些基本游戏规则在此基础之上更进一步地开发出俄罗斯方块的创新创意模式在经典游戏基础上开发出随着分数增高而等级增高难度加大的模式并且创意性的开发出可操控方块颜色变换的模块并且增添了游戏声音和音乐模块。本论文对上述功能给出了具体实现流程、详细描述、和一些源代码。     本论文阐述了俄罗斯方块游戏的开发和发展历史、开发此游戏的意义以及开发环境并根据软件工程开发软件和java编写程序的相关知识对程序的需求分析、概要设计、详细设计与实现、调试运行进行了一系列描述。     此次程序设计是在Microsoft Windows 7系统下以Java为开发语言在Eclipse开发平台上进行游戏的设计与实现。 关键词游戏设计俄罗斯方块软件工程JavaEclipse。 Based on the design and implementation of Java game Tetris Abstract Tetris is a popular all over the world, from the beginning to now has been enduring the computer, mobile phone, handheld game machine products, is a game with simple rules, but not the lack of fun, simple classic game, easy to use, wide application scope, basic rules of simple Tetris game evident to anyone. There is 7 different to the regular pattern of the composition of the small box on the screen in succession from the fall, the operation of the mobile game player to spell out the whereabouts of a complete bar, then disappear, game player score, game level, when the accumulation is not eliminated graphics to the top of the screen, the game is over.       Tetris game is the first by the Russians in 1984 Alexei Pazhitnov developed a casual game, only a short while ago it creates unmatched business value, affect the development of a generation of casual games and industrial chain. With the information age era of science and technology continuous development and change, the computer has spread to every persons life, in the busy working life, this kind of casual games brought some people to relax.        This paper gives a detailed description of the basic ideas of the traditional analysis of classic Tetris and some basic rules of the game, on this basis, further develop the creative mode in Tetris, the classic game developed with the scores increased and the higher rank of difficulty of the model, and develop creative control box color transform the module of the game, and add music and sound module. In this thesis the function given the specific implementation process, described in detail, and some of the source code.        This paper describes the development history and development of Tetris game, developed this game meaning as well as the development environment and according to the related knowledge of software engineering and software development of Java programming, analysis, outline design of program requirements, detailed design and implementation, debugging and running a series of description.       The program is designed in Microsoft Windows 7 system, with Java as the development language, Eclipse development platform for the design and implementation of the game Key Words: Game design Tetris, Software engineering, JavaEclipse。 1 绪论 绪论从程序的开发背景、开发意义以及所需要开发技术和目前国内外对俄罗斯方块游戏的研究现状进行了简要的叙述。 1.1程序开发背景及意义 俄罗斯方块游戏是一款流行于全世界并且经久不衰的游戏是一款在计算机手机电视游戏机掌上游戏机等一系列产品上都能玩的休闲小游戏它曾经创造了几乎任何游戏都无可匹敌的轰动和无数的商业价值是游戏史软件开发史上的一件重要的大事。 在1984年6月的一天俄罗斯莫斯科的数学家阿列克谢·帕基特诺夫Alex Pajitnov在工作地点莫斯科科学计算机中心玩过一个拼图游戏后突然受到启发而设计出这款游戏刚开始他只是在Electronica 60一种计算机上进行开发后来经由瓦丁·格拉西莫夫Vadim Gerasimov移植到PC端并且在莫斯科的计算机界广泛传播俄罗斯方块开始大火成为了有史以来最为畅销的经典休闲小游戏至今还一如既往保持魅力。俄罗斯方块简单的基本游戏规则是在一个用于摆放小正方形的标准虚拟游戏场地基本单位为小型正方形由四个小型正方形组成7中不同的规则图形田字形Z字形反Z字形7字形反7字形T字形长条形通过玩家操作上键以90度180度270度360度旋转方块一共有28种图形方案通过左键右键左右移动下键加速下落调整位置是方块在屏幕底部拼出完整的一条或几条然后消除给新落下的方块腾出位置每消除一条完整横条玩家等级提高一级当等级提高到一定等级时刚快下落速度加快一旦没被消除的方块到达屏幕顶端游戏结束。 随着计算机技术的日益更新和不断发展俄罗斯方块游戏也不断地推出各式各样的模式也有许多不同的版本供大家玩耍因为游戏本身有简单有复杂能够很好地锻炼游戏玩家的脑力反应能力和逻辑思维能力还能给玩家带来无穷的游戏乐趣所以深受广大玩家的喜欢。对于开发游戏软件大多数人都感到触摸不到很神奇随着开发方法和工具的不断推陈出新自己动手开发一些小游戏也并非遥不可及。俄罗斯方块游戏在游戏史上的地位无可匹敌并且游戏的界面简约代码并不是很复杂互联网上也有很多关于俄罗斯方块游戏实现的一些算法和设计难度并非特别大。 俄罗斯方块游戏简单益智以其独特简洁的界面和极具玩耍乐趣的模式让众多的游戏爱好者深陷其中无法自拔并且老少皆宜。在如今快节奏的生活当中学生和工作党的学习工作压力也随之越来越大每个人的任务逐渐繁重越来越少的自由支配休息时间让人们更加迫切的需要有一些既简单又节省时间的休闲游戏供大家娱乐。毫无疑问俄罗斯方块是一款简单益智有趣的休闲小游戏并且可以移植到电脑、手机、平板电脑、电视游戏机、掌上游戏机、电子词典、Mp4等一系列便携设备上。本次课题研究无论从技术开发上还是社会意义上都是很有价值的是本人对游戏开发的一次胆大尝试。 1.2开发技术概述 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科设计包括程序设计语言数据库算法软件开发工具系统平台设计模式等很多方面在现代社会中软件应用于电子邮件嵌入式系统人机交互界面办公套件操作系统编辑器数据库游戏等多个典型方面同时在如今社会的各式各样的行业中都有计算机软件的应用包括工业农业银行航空政府部门等等能有效的促进经济和社会的发展提高人们的工作效率和生活效率。 俄罗斯方块游戏开发代码相对来说不是特别复杂本论文基于Java编程语言采用Java语言中常用的Swing组件。Swing是Java中的图形用户界面GUI工具包是Java基础类的一部分包括了文本框分隔窗格按钮表等GUI器件使用纯Java写成开发人员可以用少量的代码就可以写出Swing各式各样的灵活丰富的功能和模块化组件来创建漂亮优美的用户界面。Java Swing组件中包括以下几个常用的类JFrame 是屏幕上的图形对象可以有最大化、最小化、关闭等基本操作是Java的GUI程序设计的基本思路JPanel 能够用来嵌套对窗体中有相同逻辑功能的组件进行组合能够加到JFrame窗体中是Swing中的面板容器类。 JLabel 对象是用来显示文本、图像或同时显示二者并且可以设置其中的一些属性JTextField是一个用来编辑单行文本的运行组件JButton是一个用来创建按钮的类。除此之外Java中的Swing组件中还包含有许多功能的类可以简单的来创建一些优美漂亮的图形界面。 1.3俄罗斯方块游戏的研究现状 1.3.1 国内外研究现状 进入二十一世纪以来计算机不断地发展电竞行业也在不断进入上升阶段游戏软件的开发越来越火游戏软件就如同戏剧、电影一样是一种越来越火的新型的综合型艺术产品。跟一般的网页开发软件开发不同计算机游戏软件的开发不仅需要设计开发人员掌握专业的程序设计技巧和软件工程的方法还需要专业的游戏领域的知识专业的游戏开发知识才能有效的开发和实现游戏的生动界面音效处理并且跟玩家达成完美的交互等。 前苏联科学家阿列克谢·帕基特诺夫Alex Pajitnov原本开发的《俄罗斯方块》游戏是作为一种教育用软件的之后开始提供授权给各个游戏公司至此以后各大平台上就出现了各种不同版本的游戏。 Game Boy版的俄罗斯方块游戏在日本本土卖出了424万套成为了Game Boy游戏史上卖的最火的游戏。在海湾战争期间俄罗斯方块游戏成为了前线美军最适合的消磨时间的游戏之一。 俄罗斯方块游戏的基本原理对于大多数程序员来说是相对比较简单的并且俄罗斯方块游戏具有数学性动态性和很强的知名度。也经常拿来作为游戏程序设计的练习题材。 1.3.2 文献综述 文献[1]和文献[2]以零基础讲解为宗旨用实例引导读者深入学习采染基础知识→核心技术→高级应用→项目实战的讲解模式深入浅出地讲解Java的各项技术及实战技能。从初学者角度出发通过通俗易懂的语言、丰富多彩的实例详细介绍了使用Java语言进行程序开发应该掌握的各方面技术。包括熟悉Eclipse开发工具Java 语言基础,类和对象包装类数字处理类接口、继承与多态类的高级特性异常处理Swing程序设计集合类I/O输入输出反射枚举类型与泛型多线程网络通信数据库操作Swing表格组件Swing树组件Swing其他高级组件高级布局管理器高级事件处理AWT绘图与音频播放等。这两本文献覆盖了“够用”得Java语言和技术实例丰富内容详尽对于初学者和有一定的Java基础的学生来说可以快速的提高学生的开发技术和技能。本课题设计中有关图形界面设计的内容、用户界面构件及设计、事件处理与窗口构造构件以及Swing的基础知识及其系列组件等方面的内容都参考了这两本文献给予了我很大的帮助。 文献[3]主要讲解了包括2D绘图游戏动画的制作网络程序基础强化游戏界面人工智能与25D游戏扫雷、迷宫、俄罗斯方块等游戏实例碰撞、粒子系统、5D立体坐标等绘图算法多人联机游戏制作。收集了一系列的算法公式让读者能更方便的利用。以由浅入深的方式逐步分析游戏设计的过程带领读者解决游戏开发阶段可能遇到的问题并总结了Java游戏制作的实战经验。本课程设计中游戏的原理、动画的实现、音效的处理、鼠标和键盘事件处理、人工智能等知识都参考了该文献。 文献[4]探讨了经典的电脑游戏-俄罗斯方块的程序原理及其实现技术,从软件工程的角度描述了程序的功能要求、数据结构以及图形旋转、坐标变换等关键技术。通过这本文献让我了解了更多的关于俄罗斯方块游戏开发的专业领域的知识。 文献[5]属于进阶性书籍更加侧重于讲解如何使用Java来思考解决问题。这本文献本次课程设计中给予了我很多关于Java在编程时编程思想和技巧上很多的帮助。 2相关技术 2.1 JAVA简介 Java是由Sun Microsystems公司推出的Java面向对象程序设计语言和Java平台的总称。是一种能够编写跨平台应用软件的面向对象的程序设计语言。Java 技术具有良好的通用性、高效性、跨平台性和安全性广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网同时拥有全球最大的开发者专业社群。 Java语言历时近二十年已发展成为人类计算机史上影响力最深远的编程语言之一从某种程度上看它甚至超出了编程语言的范畴成为了一种开发平台一种开发规范模式。更甚至于Java已经成为了一种信仰Java语言所崇尚的开源自由等精神吸引了全世界无数的优秀的程序员。事实上从人类有记载历史以来从来没有一种编程语言可以吸引这么多优秀的程序员使用也没有一种编程语言能衍生出这么多的开源框架。 Java语言是一门非常纯粹的面向对象的编程语言它吸引了C语言和C语言的各种优点又摒弃了C语言里难以理解的多继承指针等概念因此Java语言具有功能强大和简单易用两个非常良好的特征。Java语言作为静态面向对象编程语言的代表极好地表现了面向对象理论允许程序员以一种更加优雅的思维方式进行更加复杂的编程开发。 不仅如此Java语言中相关的Java EE规范中包含了当今时下最流行的各种软件工程理念各种先进的设计思想都可以在Java EE规范、平台以及相关的框架中找见相应的实现原理。从某种程度上来看学精通了Java语言相关的各种方面的知识相当于系统的学习了软件开发的相关知识而不是仅仅学完了一门编程语言。 时至今日大部分银行电信证券电子商务电子政务等各种系统或者已经采用Java EE平台构建或者正在逐渐过渡到采用Java EE平台来构建Java EE 规范是目前最成熟的也是应用最广泛的企业级应用开发规范。 2.2 Swing组件简介 Swing API 是一组可扩展的 GUI 组件用来创建基于 JAVA 的前端/ GUI 应用程序。它是建立在 AWT API 之上并且作为 AWT API 的替代者因为它的几乎每一个控件都对应 AWT 控件。 Swing 组件遵循模型 - 视图 - 控制器架构来满足下面的准则。一个单一的 API 足够支持多种外观和风格API 是模拟驱动的这样最高层级的 API 不需要有数据API 是使用 Java Bean 模式的这样 Builder Tools 和 IDE 可以为开发者提供更好的服务来使用它。 Swing API 架构用下列的方式来遵循基于松散的 MVC 架构。模型表示组件的数据。视图表示组件数据的可视化表示形式。控制器接受用户在视图上的输入并且在组件的数据上反映变化。Swing 组件把模型作为一个单独的元素并且把视图和控制器部分组合成用户界面的元素。使用这种方式Swing 具有可插拔的外观与风格架构。Swing特点主要有 轻量级 —— Swing 组件是独立的本地操作系统的 API因为 Swing API 控件通常采用纯 JAVA 代码而不是采用底层的操作系统调用来呈现。 丰富的控件 —— Swing 提供了一组丰富的先进的控件如树页签窗体滑动条颜色选择器表格控件。 高级自定义 —— Swing 控件可以用非常简单的方法来自定义因为可视化外观是独立于内部表示的。 可插拔的外观和风格 —— 基于 Swing 的 GUI 应用程序的外观和风格可以在运行时根据有效的值改变。 2.3 Eclipse开发平台简介 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。Eclipse只是一个框架和一组服务用于通过插件组件构建开发环境。Eclipse 附带了一个标准的插件集包括 Java 开发工具Java Development ToolsJDT。 Eclipse起始于1999年4月最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境IBM提供了最初的Eclipse代码基础包括Platform、JDT 和PDE2001年11月贡献给开源社区目前由IBM牵头围绕着Eclipse项目已经发展成一个庞大的Eclipse联盟有150多家软件公司参与到Eclipse项目中其中包括Borland、Rational Software、Red Hat及Sybase等现在由非营利软件供应商联盟Eclipse基金会Eclipse Foundation管理。 2003年Eclipse 3.0选择OSGi服务平台规范为运行时架构。 2007年6月稳定版3.3发布。2008年6月发布代号为Ganymede的3.4版。 Eclipse是著名的跨平台的自由集成开发环境IDE最初主要用来Java语言开发但是目前亦有人通过插件使其作为其他计算机语言比如C和Python的开发工具。Eclipse原本只是一个框架平台提供插件开发环境Plug-in Development EnvironmentPDE这个组件主要针对希望扩展 Eclipse 的软件开发人员允许构建与 Eclipse 环境无缝集成的工具众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。由于 Eclipse 中的每样东西都是插件给 Eclipse 提供插件为用户提供一致和统一的集成开发环境使所有工具开发人员都具有同等的发挥场所。 Eclipse的优势 目前全球有上百万人在使用Eclipse进行开发。为什么Eclipse拥有如此众多的拥趸这与Eclipse集众多特性于一身有很大关系。 Eclipse 是开放源代码的软件。这意味着Eclipse不仅可以免费使用还可以通过研究源代码学习世界上顶尖开发人员的编程技术并可以共享遍布全球的开发人员所贡献的公共开放源代码库。 Eclipse是真正可扩展并可配置的。Eclipse采用插件机制犹如一个花瓶你可以随时向花瓶里面插花也可以很容易将不再需要的花取出。目前互联网上免费的、收费的插件遍地开花插件开发工作在国内外也如火如荼。 Eclipse支持众多的开发语言而不仅仅是Java。Eclipse只是给开发人员提供了一个能够扩展系统功能的最小核心基于扩展点的插件体系结构使得Eclipse支持多种语言成为可能。只要安装相应语言的插件Eclipse就可以支持该种语言的开发。目前Eclipse已经可以支持C/C、 COBOL、PHP、Perl、Python等多种语言。尽管 Eclipse 主要是一个 Java 开发环境但其体系结构确保了对其它编程语言的支持。 Eclipse提供了对多重平台特性的支持。开发者可以使用他们感觉最舒适、最熟悉的平台例如Windows、Linux、MacOS等。Eclipse对每个平台都有其单独的图形工具包这使得应用程序具有接近本地操作系统的外观和更好的性能。 基于业界领先的OSGi规范。OSGi规范最早由Sun Microsystems、IBM、爱立信等于1999年推出其服务平台包括服务网关、汽车、移动电话、工业自动化、建筑物自动化、PDA网格计算、 娱乐如iPronto和 IDE等。基于OSGi的系统以微内核形式运行因而能够轻松实现软件业界梦寐以求的可热插拔、动态改变行为、稳定高效的系统。Eclipse从3.1开 始毅然抛弃了其原有的已经获得业界认可的框架采用OSGi作为其架构。从Eclipse3.2版本开始Eclipse提供了基于OSGi开发的支 持开发者可以利用其开发基于OSGi的系统了。 Eclipse美轮美奂的人机界面受到广泛赞誉。Eclipse提供了全新的SWT/JFace API而不是AWT/Swing一改SWT/Swing单调、沉闷的界面风格使得开发基于本地的具有丰富图形界面的应用程序成为可能犹如一股春 风吹进Java的桌面开发领域给人耳目一新的感觉。 Eclipse由业界领先者推出具有强大的行业力量。Eclipse基金会吸收了大量学术研究机构、商业组织领导Eclipse的长远规划和发展并确保Eclipse处于软件工具行业的领先地位。 2.4系统平台环境 2.4.1 硬件平台 本程序开发计算机硬件如下 内存4G 硬盘500G CPUIntelRCoreTMi5—3230M CPU  2.60GHz 交互工具键盘、鼠标 显示器LCD显示器 2.4.2 软件平台 本系统的开发环境如下q 操作系统Microsoft Windows 7 Ultumate JDK版本jdk-8u121-windows-x64 Eclipse版本 Neon.2 Release (4.6.2)eclipse-inst-win64 3  系统分析 系统分析是软件开发过程中我们所要做的第一步包括系统的需求分析和可行性分析。系统的需求分析主要是用来说明本系统是一个什么系统必须用来做什么就这个问题上达到开发人员和主要用户之间的共识。系统的可行性分析主要就是对系统的所有的一切资源实施进行分析用来说明系统的开发和投入的合理性可行性和必然性并对其中可能会出现的不可预见性的问题进行合理的分析。软件开发中最具有挑战性的环节莫过于对系统的需求分析花费在需求分析上的时间无疑是非常有价值的如果时常发生需求变更会给软件开发在预定计划内完成的任务带来非常严重的不利影响。做好系统的需求分析和可行性分析这样有利于提高软件开发过程中的便利性能对软件开发过程进行实时监控和管理更方便的按计划进行从而达到提高软件的质量的目的为程序开发人员用户等提供更便携的交流合作。作为工作成果的原始依据系统的需求分析和可行性分析也间接的可以向潜在用户表达自己系统的功能让用户来判断系统的功能等是否符合所要达到的需求。 3.1可行性分析 可行性分析基于技术经济工程技术等方面的项目主要内容和配套条件如市场需求资源供应施工规模工艺路线设备选型环境影响资金筹集盈利能力等。 其他方面研究分析比较项目完成后可能取得的财务经济和社会环境影响的预测该项目是否值得投资以及如何对项目决策进行咨询建设为全面的系统分析方法提供依据。 可行性分析应具有远见公正可靠科学的特点。 为了保证可行性研究工作的科学性、客观性和公正性有效地防止错误和遗漏在可行性研究中首先必须站在客观公正的立场进行调查研究做好基础资料的收集工作。对于收集的基础资料要按照客观实际情况进行论证评价如实地反映客观经济规律从客观数据出发通过科学分析得出项目是否可行的结论。 可行性研究报告的内容深度必须达到国家规定的标准基本内容要完整应尽可能多地占有数据资料避免粗制滥造搞形式主义。 在做法上要掌握好以下几个要点先论证后决策处理好项目建议书、可行性研究、评估这三个阶段的关系哪一个阶段发现不可行都应当停止研究要将调查研究贯彻始终。一定要掌握切实可靠的资料以保证资料选取的全面性、重要性、客观性和连续性多方案比较择优选取。对于涉外项目或者在加入WTO等外在因素的压力下必须与国外接轨的项目可行性研究的内容及深度还应尽可能与国际接轨。 为保证可行性研究的工作质量应保证咨询设计单位足够的工作周期防止因各种原因的不负责任草率行事。 可行性分析的目的是确定是否可以在最短时间之内用最低的成本解决这个问题。可行性分析最主要的不是解决问题,而是要研究这些问题是否值得去花费人力和财力去研究和解决。如果有简单易行的方法则予以肯定。 3.1.1经济可行性分析 系统的经济可行性分析的目的是核算系统从开发建设到系统运行期间所需的资金投入以及新系统的市场需求及经济效益将投入预算与预计收益进行对比核算经济方面的成本的可行性。 本游戏系统主要是用于大学生软件工程毕业课程设计不需要考虑其所能产生的经济效益和游戏日后的发展状态。对游戏系统的本身的经济要求并不高只是通过本游戏系统的开发来提升学生自身的知识和能力水平。只需要有一台装有JDK运行环境和Java开发工具Eclipse软件的电脑就可以所以经济问题可不用考虑。 3.1.2技术可行性分析 可用于编写俄罗斯方块游戏的编程语言有很多本次课题主要是在基于Java的环境下进行游戏系统的开发所以本系统主要利用的是Java中的Swing组件进行开发需要对变量定义初始化界面设计游戏初始化进入游戏退出游戏处理游戏过程中的各种操作进行相应功能的代码要求技术方面要求并非特别困难技术可行。 3.1.3社会可行性分析 本游戏系统的开发主要是用于毕业课程设计与论文用以巩固大学四年学习的知识主要以个人和学校为单位仅供个人娱乐和学校的课程设计与毕业论文检查入档案不会对社会造成任何的影响所以无需考虑到任何法律版权等一系列社会因素在这方面完全可行。 3.2需求分析 所谓的“需求分析”是指对待解决的问题的详细分析澄清问题的要求包括需要输入什么数据得到什么结果最后应该输出什么。可以说在软件工程中“需求分析”是确定电脑“做什么”达到什么样的效果。可以说需求分析是在系统完成之前完成的。 在软件工程中需求分析是指在创建新的或更改现有计算机系统时描述新系统的目的范围定义和功能所需的所有工作。需求分析是软件工程中的关键过程。在这个过程中系统分析师和软件工程师决定了客户的需求。只有在确定了这些需求之后才能分析和寻求新系统的解决方案。需求分析阶段的任务是确定软件系统功能。 在软件工程的历史上人们一直认为需求分析是软件工程中最简单的一步。但是在过去十年中越来越多的人意识到需求分析是最重要的过程。如果分析师在需求分析时无法正确地了解客户的需求则最终软件无法真正达到客户的需求或软件项目在指定时间内无法完成。 3.2.1 功能性需求 整个游戏系统会随机产生7种由四个小方块组成的不同形状的方块经过旋转后得到28种状态如果增加游戏难度会增加六种不同形状的方块形状同样经过旋转后增加24种状态。方块按一定的速度自由下落玩家通过键盘上的上下左右按键控制方块的左右移动和旋转将方块落下后放在合适的位置。当方块落下后如果方块落下后有一整行被方块填满那么该一整行消去。当一行被消去时玩家得分增加10分当得分达到100分后玩家等级增加一级速度加快一级难度加大。如果当方块落下后整个游戏画布界面被占满则方块不再下落游戏宣告失败。游戏具体的功能需求有如下几个 ▪ 游戏界面需求游戏的良好的界面会让玩家眼前一亮更加能充分的感受到游戏带来的娱乐性放松性。本游戏的默认背景色是深绿色游戏主界面画面自定义为自己的所喜欢的图片并可以更改主界面方块默认用橘黄色预显方块颜色默认为淡紫色。背景色、前景色对比鲜明以达到让玩家眼前一亮的感觉并能在游戏达到高等级状态方块下落速度渐高的情况下使玩家能够清楚的分辨出下落方块的形状增加游戏的刺激性。 ▪ 游戏形状需求用数组作为存储方块52种状态的数据结构即初级等级长条形、Z字形、反Z形、田字形、7字形、反7形、T字型一共7种形状的向4个方向的旋转变形和中级等级的三种方块12种不同的状态高级等级的三种方块12种不同的状态。各个方块可以实现按逆时针的旋转方式旋转并且方块能否旋转需要用条件加以判断如果旋转后可能发生越界则不能旋转需要调整位置来保证他可以旋转。 ▪ 键盘处理事件需求当方块下落时玩家可以通过键盘上的方向键上键实现旋转下键实现加速下落左键实现左移右键实现右移和空格键实现一键下落字母P键实现暂停字母C键实现继续等一系列的操作。 ▪ 鼠标处理事件需求通过鼠标可以点击控制面板中的菜单按钮和帮助按钮选择菜单栏的菜单项可以实现游戏的开局选择游戏等级更改游戏中方块的颜色显示游戏主界面背景色和前景色的显示更改游戏背景图片方块下落速度是否播放游戏中的声音等一系列的功能。 ▪ 显示需求本游戏程序的显示需求是要求当方块落下后填满一整行则该行消除其余剩下的未填满的行自动逐次向下移动消去一行右界面得分增加十分当分数增加到100分时等级增加一等级。当方块落下叠加到主界面的全部所有行时方块不再下落游戏结束主界面提示“Game Over”字样。 3.2.2 非功能性需求 非功能性需求俄罗斯方块游戏系统的非功能性需求包括游戏主界面左上角图标显示调整窗口尺寸最大化最小化但不包括主界面的尺寸大小游戏运行时弹出窗口的位置居中等一系列非功能性需求。 3.2.3  接口控制 本俄罗斯游戏系统在Windows操作系统下主要是通过键盘进行游戏的操 作通过鼠标进行开局退出设置等一系列操作。首先游戏利用键盘的按键进行游戏的操作所以需要使用键盘的接口事件。其次在游戏进行的全过程中需要使用鼠标进行游戏的控制包括开始选择等级改变设置改变颜色查看版本信息退出等所以要对鼠标的单击按键添加接口监听事件编写相应的代码来实现鼠标和键盘的相应功能。 4  系统的概要设计 4.1  系统的功能设计 4.1.1  手动处理业务的基本流程 本游戏的设计以娱乐为初衷以益智为目的在综合研究以往俄罗斯方块经典游戏功能的基础上推陈出新加之新的功能赋以新的生机和活力。以下具体阐述游戏的基本流程。 运行说明 1运行程序点击右侧控制面板内的“开始”或“控制”菜单内的“开始”按钮开始游戏。 2使用上、下、左、右键和空格键P键C键控制方块的变形、下落、向左和向右移动和一键迅速下落暂停继续。 3方块满行消除分数自动增加等级自动增加一级。 4等级增加、方块下落速度增加按右侧控制面板或“游戏”菜单内的“初级”“中级”“高级”按钮来手动改变游戏难易程度。也可点击“方块颜色”菜单内的选项更改方块颜色等也可以通过“自定义”菜单内的选项来更改游戏的一些属性。 5按键盘键字母P键可以控制游戏暂停然后按子母键C键可以控制游戏继续上次游戏。按“结束游戏”按钮游戏会彻底停止正在进行的当局游戏再按“开始”或“控制”菜单内的“重新开始”会开始新游戏。 6当方块占满整个窗口不能再有新方块下落时游戏会弹出“Game Over”的对话框提示游戏结束。 游戏的基本流程图如图4—1所示 图4-1游戏的基本流程图 4.1.2  基本流程的功能模块 本系统基于游戏的各项功能来设计游戏的各个功能模块。图4-2为本游戏的系统功能模块示意图如图所示本游戏主要有两大模块游戏界面区游戏控制区。游戏界面区分显示玩家可选操作、显示玩家操作结果两个部分。游戏控制区分更改颜色、开始、更改游戏等级为初级、更改游戏等级为中级、更改游戏等级为高级、自定义下落速度、更改背景、退出以及其他等一些功能模块。 图4-2系统功能模块示意图 图4-3为游戏界面区模块设计示意图如图所示游戏界面区模块可细分为闯进新游戏界面、处理玩家操作、显示玩家操作结果三个功能模块。 图4-3界面模块示意图 图3-4为游戏控制区设计示意图如图所示游戏控制区模块分为开始、自定义操作设置、初始游戏级别设置、初始颜色设置、退出等功能模块。 图4-4控制区模块示意图 5  系统的详细设计与实现 Java是一种纯面向对象Object-Oriented的程序语言它的诸多优点在此就不作详细论述了。从面向对象的观念出发本程序主要可分为以下几个模块 ●游戏主界面显示模块 ●方块及数据显示模块 ●方块移动控制模块 ●游戏界面颜色控制模块 ●游戏进度、等级控制模块 分析对象的技巧在于它的功能的扩展性及维护效率。试想如果因为外部环境或者用户需求的变化需要对程序进行功能扩展或者维护就要对代码作大幅度的更动甚至重写这样就失去了面向对象的优势所以在本程序分析时将独立性高的模块作为一个对象以提高程序的可扩展性和可维护性。以下该游戏中类的设计 MyFrame类继承自JFrame类作为游戏的主类负责对游戏的主体全局进行控制连接与指挥各个类的枢纽。 PreView类继承自JPanel类作为操作面板类负责安放主游戏窗口积分板级别控制按钮等窗口用以控制游戏进程。 GameCanvas类继承自JPanel类ChangeBlockColor线程类动态改变画布类的方格颜色画布类通过检查方格颜色来体现ChangeBlockColor方块的移动情况与消去状况。 Box类方格类组成方块的基本元素主要表达方式为颜色。 Block类作为操控方块的类控制方块的移动下落以及变形。 5.1  游戏主界面显示模块 一个优秀的软件系统不仅体现在核心的功能的多样性和强大上如果使用者所面对的是枯燥的、陈旧的界面的话那么这个的软件系统是不成功的所以好的、精美的界面设计是极为重要的环节。为玩家设计制作布局合理、视觉效果良好的界面的重要性就不言而喻了。 游戏主界面采用Swing组件开发并且向其注册监听器以实现各种控制功能综合游戏窗体的设计其上至少需要注册三个监听器分别是动作监听器(ActionListener)、键盘监听器(KeyListener)、选项监听器(ItemListener)。 根据初步设计可以确定客户端上所要用到的Swing组件对象有JFrame对象、JPanel对象JLabel对象、JButton对象、JMenuBar对象、JMenu对象、JMenuItem对象、JTextField对象、JTextArea对象、JDialog对象等至少十个Swing组件对象。下图5-1为游戏主界面截图。 图5-1游戏主界面截图 本游戏主界面设计的初始颜色搭配基于对比鲜明的原则默认背景色为深绿色左上角设置俄罗斯方块图标得分初始值为0等级初始值为1最高分记录初始值为0。游戏主窗体尺寸设置为520580方块移动范围窗格由一个20行、12列的二维数组控制且左上角图标设置为方块图案起标识作用。 5.2  画布、方块显示模块 本游戏中将画布设计为自定义图片可以根据自己的需求来自己动手更改背景图片在方块下落过程中根据颜色的变化识别下落的方块。 5.2.1  背景画布模块设计 该游戏的主背景画布是一个20行、12列的二维数组方块显示是由相应颜色变化来标识主窗体用颜色填充后可形成呈现出来背景样式和方块。本游戏用继承自JPanel的GameCanvas类控制背景画布的显示用rows代表画布的行数cols代表画布的列数行数和列数决定着画布拥有方格的数目。背景画布主要实现代码如下 首先用一个画布类的构造函数来表示整个主界面的行数、列数以及主界 中的相对位置 /** * 画布类的构造函数 * param rows int, 画布的行数 * param cols int, 画布的列数 * 行数和列数决定着画布拥有方格的数目 */ public GameCanvas(int rows, int cols) { this.rows rows; this.cols cols; this.setOpaque(false); boxes new Box[rows][cols]; for (int i 0; i boxes.length; i) { for (int j 0; j boxes[i].length; j) { boxes[i][j] new Box(false); } } setBounds(0, 0, 300, 500);//设置相对位置坐标 setBorder(new EtchedBorder( EtchedBorder.RAISED, Color.white, new Color(148, 145, 140))); } /** * 取得画布中方格的行数 * return int, 方格的行数 */ public int getRows() { return rows; } /** * 取得画布中方格的列数 * return int, 方格的列数 */ public int getCols() { return cols; } 其次在设置一个画布类的构造函数来表示整个主界面的前景色背景色并获取其前景色和背景色 /** * 画布类的构造函数 * param rows 与public GameCanvas(int rows, int cols)同 * param cols 与public GameCanvas(int rows, int cols)同 * param backColor Color, 背景色 * param frontColor Color, 前景色 */ public GameCanvas(int rows, int cols, Color backColor, Color frontColor) { this(rows, cols); this.backColor backColor; this.frontColor frontColor; } /** * 设置游戏背景色彩 * param backColor Color, 背景色彩 */ public void setBackgroundColor(Color backColor) { this.backColor backColor; } /** * 取得游戏背景色彩 * return Color, 背景色彩 */ public Color getBackgroundColor() { return backColor; } 5.2.2  预览方块模块设计 方块和数据信息是游戏中最基本的功能模块。Box这个类方格类是组成块的基本元素用自己的颜色来表示块的外观 MyTask继承TimerTask类用来定时下落用计数方式来实现速度的改变MyListener类继承KeyAdapter类用来实现按键监听控制方块的上下左右。定义一个4x4方阵共16个小格。用“0”和“1”来表示每个方格是绘制新颜色还是保留底色。 每得到一个新方块都是随机从七种形态的方块中选取一种。游戏定义了一个变量代表新方块的模型。比如定义int型数组STYLE代表28中方块类型7行4列每个元素代表其中一种方块。即0blockkindnum60blockstatusnum3 那么当方块落下需要得到新方块时只需随机得到一对blockkindnumblockstatusnum值然后再根据这个STYLE的值构画相应的方块。剩下的问题就是应该怎么随机到一对STYLE行列值。 Java语言包中的Math类提供了一个生成随机数的方法random()调用这个方法会产生一个在0-1之间的双精度浮点数。所以每次要得到新方块时只需调用一次这个方法得到一个0-1的双精度浮点数然后用该数乘以7之后强转成整型即可得到1—7的整数用来控制行。用该数乘以4之后强转成整型即可得到1—4的整数用来控制列。 由此可以组合出多种图形定义然后用代码实现下列功能 1每次执行首先为随机数产生不同的初值。 int col (int) (Math.random() * (gc.getCols() - 3));//随即位置生成列 int style Constant.STYLES[(int) (Math.random() * Block.get_addl())][(int) (Math.random() * 4)]; 图5-2随机产生方块流程图 2随机选取一个图形图5-2随机产生方块图具体描述用生成的随机数控 产生的图形。 3当前图形在其4*4网格中的位置信息。 绘制4行4列的方块预显方格随机生成预显示的方块样式。本游戏用二维数组存储方块的28种样式。 值得注意的是在传统的俄罗斯方块游戏的基础上本游戏系统为了体现出创新的思维本着为了学习的原则在传统游戏的基础上增加了中级三种其他的方块样式和高级三种其他的方块样式。一共有52种方块样式具体的存储方式主要实现代码如下 /** * 分别对应对13种模型的52种状态 */ public final static int[][] STYLES {// 共28种状态 {0xf000, 0x8888, 0xf000, 0x8888}, // 长条型的四种状态 {0x4e00, 0x4640, 0xe400, 0x4c40}, // T型的四种状态 {0x4620, 0x6c00, 0x4620, 0x6c00}, // 反Z型的四种状态 {0x2640, 0xc600, 0x2640, 0xc600}, // Z型的四种状态 {0x6220, 0x1700, 0x2230, 0x7400}, // 7型的四种状态 {0x6440, 0xe200, 0x44c0, 0x8e00}, // 反7型的四种状态 {0x6600, 0x6600, 0x6600, 0x6600}, // 方块的四种状态 {0x8c88,0xf200,0x44c4,0x4f00},//增加的中级样式方块3个 {0xea00,0xc4c0,0xae00,0xc8c0}, {0x8c00,0xc800,0xc400,0x4c00}, {0xac00,0xcc40,0x6e00,0x8cc0},//增加的高级样式方块3个 {0x4e40,0x4e40,0x4e40,0x4e40}, {0x8480,0xa400,0x4840,0x4a00}, }; 传统俄罗斯方块游戏的7种方块样式相信很多人都知道在这里就不一一截图展示常见的方块样式。以下是在传统游戏的模式下增加的三种中级难度和三种高级难度的方块模型 ●增加的三种中级难度方块模型经过90度、180度、270度、360度旋得到四种转状态 图5-10增加的三种中级难度方块模型 ●增加的三种高级难度方块模型经过90度、180度、270度、360度旋得到四种转状态 5.2.3  方块移动、旋转模块设计 方块的翻转与移动比较容易实现方块移动只需要改变方块的横坐标或纵坐标然后重新绘制方块即可。方块翻转也只需要改变背景数组的值重新绘制方块即可。 本游戏方块下落时进行动态绘制实现Cloneable接口, 以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。方块的操作类BlockOperation继承Thread类重写run()方法以实现方块的动态正确下落。当然在线程中要判定方块是处于moving状态还是pausing状态。 publicvoid run() { //moving判定方块是否在动态下落 while (moving) { try { //betweenleveltime指示相邻等级之间相差时间 sleep(betweenleveltime * (ControlMainGame.maxlevel - level flatgene)); } catch (InterruptedException ie) { ie.printStackTrace(); } //pausing判定游戏是否处于暂停状态 if (!pausing) moving (moveTo(y 1, x) moving); //moving是在等待的100毫秒间moving没被改变 }} 当然在游戏中还要判定方块移动的边界问题 比如一个方块在它左边正好差一个格子的空间才能够翻转但是它的右边恰好有一个格子的空间这种情况如果方块不能够翻转就不方便用户操作如果能够翻转就会发生越界将已经存在的方块挤占掉。要想实现翻转又不发生越界那么就应该在方块翻转后把它往右边移动一个格子然后再绘制方块这样方块就不会挤占掉其它已经固定住的方块了以下解决越界问题。 1方块翻转判定 在两种情况可能发生越界一种是方块落下去固定住以后第二种是周围的空间不允许它进行翻转。 第一种情况只需要参考方块落下去后不能够再移动的判定即可。 对于第二种情况在每次方块翻转前必须首先计算出方块周围的空间如果空间允许则翻转。否则不能翻转。 因为七种方块是不规则的每种方块要求的翻转空间都是不一样的甚至是在它的不同翻转状态下所要求的翻转空间也是不一样的首先想到的自然就是为每一种方块方块的每一种状态都写一个判定条件但是这样做未免过于麻烦。 根据观察不难发现七种形态的方块长条形的方块如果以横条的形态下落则只要能够下落就能翻转如果以竖条的形态下落那么它翻转后所处的位置必须要有4x1个格子的空间才能够翻转。对于田字形的方块只有能够继续下坠就一定能够翻转所以田字型的方块只要没有落下就一直能够翻转。而其它五种形态的方块又有一个共同点就是它们都有两种翻转状态横向占三个格子的空间竖直方向占两个空间另外两种翻转状态横向占两个格子的空间竖直方向占三个格子空间如果他们是以横向占三个格子的状态下落那么只要能下落就一定能够翻转如果是以横向两个格子的状态下落那么在翻转后周围必须要有3x2个格子的空间。 所以方块翻转的判定要分三种情况第一种情况是方块落下去后不能翻转第二种情况是对竖直状态出现的长条形的方块进行翻转判定第三种情况是对除长条形和田字形之外的其它五种以横向占两个格子的状态出现的方块进行翻转判定。 何种情况下方块能够翻转的问题解决了接下来我们就应该解决方块翻转后所处的位置的问题了因为只有事先知道方块翻转后所处的位置才能够对那个位置的空间范围进行判定判定它是否能够容纳方块。 可以确定的是无论方块怎么翻转都处在方块数组中也就是说方块必定是在游戏地图中某一4x4个格子的空间范围内。 方块数组在游戏主界面中的坐标是确定的不确定的是方块翻转后到底处在方块数组的哪个位置为了解决这个问题我们可以限定方块在方块数组中的存储原则是靠左、靠上这样无论翻转怎么翻转方块数组中第一行和第一列都是有方块的这样也就确定了方块在方块数组中的位置也就可以得知方块翻转后在游戏地图中的位置了。 假定方块数组的横纵坐标是x和y那么这个位置就是长条形的方块翻转后所处的那一行是游戏地图的第y行所占的列是第x到x3列长条形和田字形以外的五种方块翻转后的所占的行数是游戏地图的第y和第y1行所占的列是第x到x2列。 所以如果以上空间有空格子方块就能够翻转。 2翻转越界纠正 只要方块翻转后所处的空间足够方块就能够翻转但是如果方块翻转后所处的空间不足够而在它的另一边却有足够的空间呢 方块在边界处时翻转后不仅可能翻出地图外还可能发生数组越界当然只需要将地图数组定义得大一些就能够避免数组越界错误对于方块越界如果在它的另一边有足够空间那么就应该把方块往另一个方向移动适当的单位纠正方块越界错误。如图5-12方块翻转流程图所示方块翻转需要经三次判定是否已经下落到底部、翻转后是否有足够空间、翻转后是否越界。 图5-12 方块翻转处理流程图 玩家操作键盘实现方块的移动、旋转代码引进ControlKeyListener类继承KeyAdapter类进行键盘监听功能的实现。KeyAdapter类继承自Object类实现KeyListener接口用来接收键盘事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。扩展此类即可创建 KeyEvent 侦听器并重写所需事件的方法即是 ControlKeyListener类。使用ControlKeyListener可创建侦听器对象然后使用组件的 addKeyListener 方法向该组件注册此侦听器对象。当按下、释放或键入某个键时将调用该侦听器对象中的相应方法并将 KeyEvent 传递给相应的方法。实现代码如下 privateclass ControlKeyListener extends KeyAdapter { publicvoid keyPressed(KeyEvent ke) { if (!game.isPlaying()) return; BlockOperation blockope game.getCurBlock(); switch (ke.getKeyCode()) { case KeyEvent.VK_DOWN: blockope.moveDown(); break; case KeyEvent.VK_LEFT: blockope.moveLeft(); break; case KeyEvent.VK_RIGHT: blockope.moveRight(); break; case KeyEvent.VK_UP: blockope.turnNext(); break; default: break;}}} 5.3  控制面版模块 5.3.1  菜单栏模块设计 菜单栏中有“游戏”、“帮助”四个菜单选项。“游戏”选项又分“开局”、“初级”、“中级”、“高级”、“自定义”、“方块颜色”、“退出”等七个选项。“帮助”选项中有“关于”选项用于显示游戏版本等信息。 1“开局”的按钮功能为实现游戏画布的重新绘制类似reset的功能。该按钮的监听实现代码如下: /** * 重置画布 */ public void reset() { for (int i 0; i boxes.length; i) { for (int j 0; j boxes[i].length; j) boxes[i][j].setColor(false); } repaint(); } 2“初级”、“中级”、“高级”按钮用来手动调节游戏的等级从而改变游戏的等级难度。 “退出”按钮控制游戏随时退出终止游戏。 3“帮助”按钮中点击“关于”按钮显示与游戏软件本身相关信息具体信息如图所示 图4—19 “关于”选项截图 5.3.2  控制面板按钮设计 本游戏控制面板中包含得分统计、等级统计等字段。 其中的TextField控件均由游戏本身统计给出玩家不能私自编辑。本游戏的游戏规则为每消一行得10分每增加100分上升一个等级初始得分为0初始等级为1。 以下给出得分、等级更新等功能实现的主要代码 /** * 判断是否满行满行则调用消行方法。 */ private void isFullLine() { // TODO Auto-generated method stub for (int i 0; i 20; i) { int row 0; boolean flag true; for (int j 0; j 12; j) { if (!gc.getBox(i, j).isColorBox()) { flag false; break; } } if (flag true) { row i; gc.delete(row);//删除行 if(isMusictrue) {mp.playEraseSound();} addScor();//增加分数 if(scor%1000)//设置为100分增加一个等级 upspeedtrue;//将速度增加标志位至为true if(upspeedtrue) upLevel(); } } } /** * 得分的计算方法 */ private void addScor() { scorscor10; jt9.setText(得分MyFrame.scor); } } private void reset() { scor0; rank0; jt10.setText(等级rank); jt9.setText(得分scor); upspeedfalse; playingtrue; runstopfalse; gc.setGameOver(false); gc.repaint(); gc.reset(); } 控制面板中按钮的功能在4.3.1中已给出代码在此不再赘述。 6 系统的测试运行 6.1 测试概述 系统测试是将软件计算机硬件外围设备网络等元素确认在一起进行各种信息系统的组装测试和确认测试系统测试是为整个产品系统进行测试目的是验证是否 系统满足需求规格的定义找出与需求规格不一致或矛盾的地方以提出更全面的方案。系统测试发现问题后尝试找出错误的原因和位置然后进行更正。 是基于黑盒子类测试的整体系统要求应该覆盖系统的所有组件。 对象不仅包括要测试的软件还包括软件依赖的硬件外围设备甚至包括某些数据一些支持软件及其接口。 系统测试是一个集成测试软件作为计算机系统的一部分结合系统的其他部分在计算机系统的实际操作环境中进行一系列严格有效的测试以找出软件潜在的问题确保系统的正常运行。 系统测试的目的是验证最终软件系统是否符合用户要求。 主要内容包括 1功能测试。也就是说测试软件系统的功能是正确的根据文档的要求如《产品需求规格说明书》。 因为正确性是软件最重要的品质因素因此功能测试至关重要。 2健壮性测试。也就是说在异常情况下测试软件系统的能力是否正常运行。健壮性有两个含义一个是容错另一个是恢复能力。 6.1.1  测试原则 软件测试的基本原则齐全的检测的产品用户的角度尽可能多发现系统使用的问题过程中的问题和漏洞、研究和分析、在产品中有缺陷的方面提出问题与改进建议。详细的测试原理如下 1软件测试计划是软件测试的行动导向,实际的测试应该细心严格执行,高可行性的严格执行测试计划,特别是确定测试方法和测试目的。 2测试标准建立基于用户需求软件测试主要目的是为了确保产品的一致性和验证产品能够满足客户的需求所以在测试过程中应该在用户的角度始终站在看问题并发现软件缺陷和不足所带来的影响系统中最严重的错误无法满足用户需求的程序以及功能缺陷。 3不能随意对待测试。 尤其是对系统的测试,反复测试,如果不严格执行测试计划,很有可能会因为疏忽导致的新BUG的产生。因此,反复测试阶段也应给予充分重视,早期检测中有很多错误,大多是因为疏忽而没被发现。 目的 1确保系统测试的活动正常进行; 2验证软件产品和系统要求不匹配或矛盾的情况; 3建立完善的系统测试缺陷跟踪数据库; 4确保软件系统的测试活动和结果及时通知相关团体和个人。 6.1.2  测试方法 为了全方位的测试系统,找出系统中存在的问题和故障使用多种测试方法一起测试,可以更加全面的总结出系统设计的优缺点。采用的测试方法有以下几个: 功能测试测试系统中各个功能模块下的功能点是否可以正常使用; 手动测试主要测试输入、点击等各项功能; 黑盒测试输入后查看得出的结果是否正确。 恢复测试恢复测试作为系统测试主要关注导致软件运行失败的各种条件并验证恢复过程可以正常实施。 在某些情况下系统需要具有容错能力。 此外系统故障必须在规定的时间内更正否则将导致严重的经济损失。恢复测试主要检查系统的容错能力。当系统出错时能否在指定时间间隔内修正错误并重新启动系统。恢复测试首先要采用各种办法强迫系统失败然后验证系统是否能尽快恢复。对于自动恢复需验证重新初始化reinitialization、检查点(checkpointing mechanisms)、数据恢复(data recovery)和重新启动 (restart)等机制的正确性对于人工干预的恢复系统还需估测平均修复时间确定其是否在可接受的范围内。 安全测试安全测试用于验证系统内的保护机制防止非法入侵。 在安全测试中测试人员扮演着试图入侵系统的角色采用多种方式试图突破防线。 所以系统安全设计的标准是找出使入侵系统成本更高的方法。安全测试检查系统对非法侵入的防范能力。安全测试期间测试人员假扮非法入侵者采用各种办法试图突破防线。例如①想方设法截取或破译口令②专门定做软件破坏系统的保护机制③故意导致系统失败企图趁恢复之机非法进入④试图通过浏览非保密数据推导所需信息等等。理论上讲只要有足够的时间和资源没有不可进入的系统。因此系统安全设计的准则是使非法侵入的代价超过被保护信息的价值。此时非法侵入者已无利可图。 压力测试压力测试是指在正常资源下使用异常流量频率或数据量来实施系统。 以下试验可以在压力试验中进行 ①如果平均中断次数是每秒一到两次那么特殊测试用例的设计每秒产生10次中断。 ②将输入数据量增加一个数量级以确定输入函数如何响应。 ③在虚拟操作系统中需要产生最大量的内存或其他资源的测试用例或产生过多的磁盘存储数据。 一般的情况下系统都要反复测试因为在系统时间和功能的限制所以系统不可能完美无缺。因此有必要对各种测试方法一起检测。 强度测试 强度测试检查程序对异常情况的抵抗能力。强度测试总是迫使系统在异常的资源配置下运行。例如①当中断的正常频率为每秒一至两个时运行每秒产生十个中断的测试用例②定量地增长数据输入率检查输入子功能的反映能力③运行需要最大存储空间或其他资源的测试用例④运行可能导致虚存操作系统崩溃或磁盘数据剧烈抖动的测试用例等等。 性能测试 对于那些实时和嵌入式系统软件部分即使满足功能要求也未必能够满足性能要求虽然从单元测试起每一测试步骤都包含性能测试领测认为只有当系统真正集成之后在真实环境中才能全面、可靠地测试运行性能系统性能测试是为了完成这一任务。性能测试有时与强度测试相结合经常需要其他软硬件的配套支持。 6.1.3  测试意义及注意事项 软件测试是软件设计过程中极其重要的一个环节是保证软件的质量的重要保障。测试的方法的好坏会直接影响到软件的好坏进行软件测试可以找出其中的错误、不足并加以改进从而得到一个高效、可靠的系统。 软件应从多角度进行测试和分析这样才能找出其中错误的地方。测试的时间最好找一些与设计系统无关的人员或者分析人员。因为在开发软件的时候开发人员已经形成了自己的思维定势在测试的时候始终受到这种思想的束缚很难找出其中的错误而与设计无关的人员和那些分析人员很容易找出错误所在。 在程序调试过程中一定要耐心仔细一个细微的错误将会导致整个功能不能实现导致浪费很多的时间去修改。应在以下几方面加以注意 1语法错误 语法错误是经常碰到的错误。例如命令拼写错误或传递给函数的参数不正确都将产生错误。语法错误可能导致不能继续编写代码。 2逻辑错误 逻辑错误通常可能是潜在和难以检测的。当有因键入错误或程序逻辑流程引起的逻辑错误可能会成功运行但产生的结果却是错的。例如当本应使用小于符号比较数值但却使用了大于符号时那么将返回不正确的结果。 3运行时错误 运行时错误是在执行过程中指令试图执行不可能的动作而导致的必须纠正运行时产生的错误这样才能保证软件运行的可靠性。 本游戏在开发过程中采用了多种有效措施进行测试以保证软件质量对本游戏进行了边界处旋转、方块翻转越界等方面的测试极大的保证了软件质量和出错几率。但是系统中可能还存在着一些其他的错误和缺陷因此游戏必须要经过反复的运行测试尽最大量将bug减到最少。 6.2 游戏代码、算法的测试 1写get()方法时需要有返回值但是程序中没有写return语句使程序在编译时出现错误。解决方法是在方法中加入return语句返回相应的内容即可。 2使用随机函数产生方块时没有给各个方块传入参数编译不能通过。解决方法是根据各个方块的构造传入相应的参数。 3写T字形方块各方格的默认位置时将控制方块位置的变量i初始化为0运行的结果是丁字形方块默认成了竖形方块。解决方法是将变量i的初始化数值改为1即可达到设计的效果。 4运行程序时统计的分数只是每一次消除满行后的分数而以前的分数就会被覆盖没有累计。解决方法是将程序中的“score”改为“score”就可以使分数累加。 5算法流程的错误主要集中在如何检测及消去方块还有如何在通关之后对分数的累加进行处理是否升级的判定这些方面经过与同学的讨论以及参考资料都最终得到了解决。 6.3 游戏界面菜单选项的功能测试 1“游戏”菜单测试 表6.1游戏菜单测试用例 测试用例编号 测试项目名称 测试执行步骤 输出 测试结果 01 “开局”按钮测试 点击“游戏”→“开局” 游戏重置 成功 02 “结束游戏”按钮测试 点击“游戏”→“结束游戏” 游戏结束 成功 03 “初级”按钮测试 点击“游戏”→“初级” 游戏等级选择为初级 成功 04 “中级”按钮测试 点击“游戏”→“中级” 游戏等级选择为中级 成功 05 “高级”按钮测试 点击“游戏”→“高级” 游戏等级选择为高级 成功 06 “自定义”按钮测试 “自定义”按钮测试 弹出对话框可以更改自定义信息 成功 07 “下落速度”滑块测试 点击“游戏”→“自定义”→“下落速度” 拖动滑块可更改方块下落速度 成功 08 “方块形状”单选框按钮测试 点击“游戏”→“自定义”→“方块形状”单选框 可选择方块形状初级、中级、高级、来改变方块的形状 成功 09 “方块是否自动上涨”选择框测试 点击“游戏”→“自定义”→“方块是否自动上涨”选择框 可勾选小方格选中则方块自动上涨不选中则方块不自动上涨 成功 10 “游戏过程是否播放声音”选择框测试 点击“游戏”→“自定义”→“游戏过程是否播放声音”选择框 可勾选小方格选中则游戏过程中播放声音不选中则游戏过程中不播放声音。 成功 11 “更换背景”选择框 点击“游戏”→“自定义”→“游戏过程是否播放声音”选择框 可勾选小方格选中则更换游戏背景图片不选中则不更换游戏背景图片 成功 12 “确定”和“取消”按钮测试 点击“游戏”→“自定义”→“确定”或“取消”按钮 点击确定保存更改设置退出对话框点击取消则不更改设置退出对话框 成功 13 “方块颜色”按钮测试 点击“游戏”→“方块颜色” 弹出对话框可以更改方块颜色HSBRGB等自定义信息 成功 14 “退出”按钮测试  点击“游戏”→“退出” 退出游戏并关闭主界面窗口 成功 2“帮助”菜单测试 表6.2 “帮助”菜单测试用例 测试用例编号 测试项目名称 测试执行步骤 输出 测试结果 15 “关于”按钮测试 点击“帮助”→“关于” 弹出对话框提示游戏版本等信息 成功 6.4 按键事件的功能测试 表6.3按键事件功能测试用例 测试用例编号 测试项目名称 测试执行步骤 输出 测试结果 16 方块移动测试 游戏过程中点击“左、右、下” 方块正常移动不会移出边界 成功 17 方块旋转测试 游戏过程中点击“上”方向键 方块无边界和障碍物阻挡的情况下可反转 成功 6.5 方块的堆砌与消行功能测试 表6.4 方块的堆砌与消行功能测试用例 测试用例编号 测试项目名称 测试执行步骤 输出 测试结果 18 方块堆砌测试 当方块下落到最底面或与障碍物接触时 方块成功堆砌在底部 成功 19 方块消行测试 当出现满行现象时 所有满行被消除方块依次下移 成功 20 游戏结束测试 当出现满屏现象时 弹出会话窗口提示“Game Over” 成功 6.6  测试结果 经过多种测试方法对系统各个方面、功能的测试多次测试测试结果表明系统基本符合的整体设计要求预期功能基本完成。系统基本可满足设计开发之初的要求测试结束。不过整体功能还不够强大创新方面做的稍微逊色作为开发的第一个版本游戏在功能、界面设计等很多方面还需要进一步完善。 结  论 在做毕业设计之前我对Java相关的开发只是停留在理论知识的水平上此次毕业设计让我明白“纸上得来终觉浅绝知此事要躬行”的道理。缺乏实际的软件开发经验是我给自己下的定论。通过这次毕业设计我完成了俄罗斯方块游戏的全部开发任务。在整个开发过程中遇到了很多问题如方块的绘制和变形、线程的创建问题、同步的控制、满行判断、消行的处理以及最高分数记录的功能实现但最终都被我一一解决对其中比较主要的几点体会总结如下 第一为了熟悉俄罗斯方块的相关功能和设计我时常从各大游戏下载网站下载单机版俄罗斯方块游戏并研究其中功能的实现和界面的设计思考和查阅资料进行分析经过逐步的设计与反复的修改论证才完成了整个游戏的开发。 第二在游戏设计过程中我采用从粗到精的设计模式从小到大测试的原则。先设计游戏框架并逐层测试而后再添加具体实现代码并逐步进行更细化的测试。设计过程中,经常会遇到难题,我会通过反复思考和测试然后找出自己的错误并加以改正再进行下一个步骤确保万无一失尽力减轻最后的调试工作量。 第三毕业设计业可以作为一个不断学习新鲜事物的过程从设计初的不懂到最后能够圆满完成我体会到在实践中不断学习的重要性这对于将来我走上工作岗位具有重要的教育意义。通过毕业设计的创作我对Java这门课程有了更深一步的了解也对我今后的就业之路打下了一定的基础。 毕业设计是我们作为学生学习阶段的最后一步是基础知识和专业知识的综合应用是一个全面的重新学习然后改进过程学生学习能力的过程和独立思考和工作能力也是一个培训而毕业设计水平也反映了大学教育的综合水平所以学校非常重视毕业设计这一环节加强毕业设计工作和动员教育的指导。在大学学习过程中毕业设计是我们社会参与实际工作的重要组成部分也是为了我们学习和解决生活问题的能力是学校生活和社会生活的转型。毕业设计完成后我尝试研究设计和实践工作的有机结合。这更有利于我们增强自己的能力。 经过一段时间的努力在一些同学和老师的帮助下我终于完成毕业项目这是一项重要任务。回想一下我们设计的过程可以说是困难和容易共存的。其中把大学学习的知识被纳入内部其实对我来说也是一个不小的挑战而且也是一次大学的知识的考试。  在毕业设计的过程中遇到了很多困难而且很多都是没有遇到过的问题如果不是亲自做可能很难在某种程度上找到自己所缺乏的知识对我们来说找到问题到解决问题这是最实际的。面对自身难以解决的问题在获取一些信息的同时在老师和学生的帮助下这些问题可以解决所以毕业设计顺利完成。据了解该项目的知识依然非常深奥所以我们不仅现在在未来更是要继续探索。 理论与实践的结合不仅包括课堂参与的知识还包括技能培训的结合以及指导学生如何去理解并接触与社会相关的东西。学生毕业设计在专业理论知识的指导下可以通过多种方式解决一些实际问题。在设计过程中学生可以运用理论知识进行实践不仅要加深对专业理论知识的理解而且要丰富和发展本书的理论知识使之变成更高层次的经验、技能。由于现有的教学模式理论知识和技能与生产实践有着严重的分离学生无法学习课堂以外的知识实际生产问题常常与学习无关无法有效得到应用。通过合理选择课题引导学生有意识地运用知识和技能体系进行分析思考为有机地整合理论知识和实践做出贡献。 社会不断变化目前社会正在转型发展人才的要求也越来越高利用眼光看待问题学习创新学习适应社会发展要求。在校外进入社会抓住今天的机遇创造未来。老师的影响力和教授的知识让我了解很多道理以一定的创新精神去面对将来的挑战。  总之对于这一次毕业设计我感觉个人不但比以前更加熟悉了一些专业方面的知识还锻炼了自己的动手能力觉得收获颇丰。同时也会有一种小小的成就感因为自己在这项任务进行的过程中努力过了。而在以后的实际工作中我们也应该同样努力不求最好、只求更好 还有就是想在此对于我的指导老师和同学们表示忠心的感谢感谢他们在这毕业设计过程中给我的帮助 程序无论是从技术还是功能上都基本地满足了用户的需求。但由于初次设计功能不够完善细节方面的设计还有不足。 这次的毕业设计我受益匪浅让我的思维方式更加缜密能多个角度的看待、处理问题知道遇到问题该如何去分析问题、解决问题。相信这些都会让我在以后的工作中受益无穷的。
http://www.w-s-a.com/news/924140/

相关文章:

  • 公司网站定位建议wordpress怎么用模板
  • 中国十大热门网站排名计算机选什么专业最好
  • 怀化建设企业网站太原网站关键词排名
  • 空间注册网站网站制作是怎么做的
  • 数码家电商城网站源码一个网站的成本
  • 网站伪静态是什么意思麻涌东莞网站建设
  • 理县网站建设公司郑州仿站定制模板建站
  • 手机网站建设网站报价诸城人才网招聘网
  • 一起做网站怎么下单临沂网站制作
  • 公司网站案例企业网站 模版
  • 做的好的响应式网站有哪些网站界面设计案例
  • 上海创意型网站建设icp备案网站信息
  • 网站没收录中山手机网站制作哪家好
  • 代驾软件开发流程wordpress 博客主题 seo
  • 成都的教育品牌网站建设网站广告js代码添加
  • 网站找人做seo然后网站搜不到了网站建设seoppt
  • 做网站优化有用吗学做文案的网站
  • wordpress 知名网站怎么做微网站
  • 用电脑怎么做原创视频网站河南建设工程信息网一体化平台官网
  • 云服务器和网站空间郑州做招商的网站
  • 规模以上工业企业的标准北京seo结算
  • 软件开发过程模型如何做网站性能优化
  • 网站建站公司广州南京江北新区楼盘
  • 哪些做展架图的网站好开发公司2022年工作计划
  • 磨床 东莞网站建设wordpress下载类主题系统主题
  • 免费学编程网站芜湖做网站都有哪些
  • 能发外链的网站门户网站网页设计规范
  • 网站建设所需人力南城区网站建设公司
  • 网站做图尺寸大小手机模板网站模板下载网站有哪些内容
  • 德阳市建设管理一体化平台网站做美食网站