基于 Java 的俄罗斯方块游戏的设计与实现

点击下载源码

基于Java的俄罗斯方块游戏的设计与实现

摘 要
俄罗斯方块是一款风靡全球,从一开始到现在都一直经久不衰的电脑、手机、掌上游戏机产品,是一款游戏规则简单,但又不缺乏乐趣的简单经典小游戏,上手容易,适用范围广泛,人所共知。俄罗斯方块游戏简单的基本规则是有小方块组成的7种不同的规则图形陆续从屏幕上落下,玩家操作移动使其下落拼出一条完整的横条,随即会消失,玩家得分,游戏等级提高,当没有被消除的图形堆积到屏幕顶端时,游戏结束。
俄罗斯方块游戏最初是由俄罗斯人阿列克谢·帕基特诺夫在1984年开发的休闲小游戏,曾几何时它创造了无可匹敌的商业价值,影响了一代休闲小游戏的开发与产业链。随着信息时代科技时代的不断发展和变化,计算机已经普及到每一个人的生活中,在繁忙的工作生活中,这一类休闲小游戏给人们带来了些许的放松。
这篇论文详细的描述分析了经典传统的俄罗斯方块实现的基本思路和一些基本游戏规则,在此基础之上,更进一步地开发出俄罗斯方块的创新创意模式,在经典游戏基础上开发出随着分数增高而等级增高难度加大的模式,并且创意性的开发出可操控方块颜色变换的模块,并且增添了游戏声音和音乐模块。本论文对上述功能给出了具体实现流程、详细描述、和一些源代码。
本论文阐述了俄罗斯方块游戏的开发和发展历史、开发此游戏的意义以及开发环境并根据软件工程开发软件和java编写程序的相关知识,对程序的需求分析、概要设计、详细设计与实现、调试运行进行了一系列描述。
此次程序设计是在Microsoft Windows 7系统下,以Java为开发语言,在Eclipse开发平台上进行游戏的设计与实现。

关键词:游戏设计;俄罗斯方块;软件工程;Java;Eclipse。

目录
摘 要 I
Based on the design and implementation of Java game Tetris II
Abstract II
1 绪论 1
1.1程序开发背景及意义 1
1.2开发技术概述 2
1.3俄罗斯方块游戏的研究现状 2
1.3.1 国内外研究现状 2
1.3.2 文献综述 3
2相关技术 4
2.1JAVA简介 4
2.2 Swing组件简介 4
2.3Eclipse开发平台简介 5
2.4系统平台环境: 6
2.4.1 硬件平台: 6
2.4.2 软件平台: 6
3 系统分析 7
3.1可行性分析 7
3.1.1经济可行性分析 8
3.1.2技术可行性分析 8
3.1.3社会可行性分析 8
3.2需求分析 8
3.2.1 功能性需求 9
3.2.2 非功能性需求 9
3.2.3 接口控制 9
4 系统的概要设计 11
4.1 系统的功能设计 11
4.1.1 手动处理业务的基本流程 11
4.1.2 基本流程的功能模块 12
5 系统的详细设计与实现 15
5.1 游戏主界面显示模块 15
5.2 画布、方块显示模块 16
5.2.1 背景画布模块设计 16
5.2.2 预览方块模块设计 19
5.2.3 方块移动、旋转模块设计 21
5.3 控制面版模块 25
5.3.1 菜单栏模块设计 25
5.3.2 控制面板按钮设计 26
6 系统的测试运行 29
6.1 测试概述 29
6.1.1 测试原则 29
6.1.2 测试方法 30
6.1.3 测试意义及注意事项 31
6.2 游戏代码、算法的测试 31
6.3 游戏界面菜单选项的功能测试 32
6.4 按键事件的功能测试 34
6.5 方块的堆砌与消行功能测试 35
6.6 测试结果 35
结 论 36
参考文献 38
致 谢 39
附录A 外文原文 40
The psychology of Tetris 40
附录B 外文翻译 43
俄罗斯方块的心理效应 43

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绘图;游戏动画的制作;网络程序基础;强化游戏界面;人工智能与2.5D游戏;扫雷、迷宫、俄罗斯方块等游戏实例;碰撞、粒子系统、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 Tools,JDT)。
  Eclipse起始于1999年4月,最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,IBM提供了最初的Eclipse代码基础,包括Platform、JDT 和PDE,2001年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 Environment,PDE),这个组件主要针对希望扩展 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
CPU:Intel(R)Core(TM)i5—3230M CPU @2.60GHz
交互工具:键盘、鼠标
显示器:LCD显示器
2.4.2 软件平台:
本系统的开发环境如下
操作系统: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所示:

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

  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值