俄罗斯方块游戏设计开发.docx

上传人:b****4 文档编号:24451942 上传时间:2023-05-27 格式:DOCX 页数:53 大小:366.63KB
下载 相关 举报
俄罗斯方块游戏设计开发.docx_第1页
第1页 / 共53页
俄罗斯方块游戏设计开发.docx_第2页
第2页 / 共53页
俄罗斯方块游戏设计开发.docx_第3页
第3页 / 共53页
俄罗斯方块游戏设计开发.docx_第4页
第4页 / 共53页
俄罗斯方块游戏设计开发.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

俄罗斯方块游戏设计开发.docx

《俄罗斯方块游戏设计开发.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块游戏设计开发.docx(53页珍藏版)》请在冰豆网上搜索。

俄罗斯方块游戏设计开发.docx

俄罗斯方块游戏设计开发

摘要

俄罗斯方块是一款非常经典游戏,风靡全球,经久不衰,是学习面向对象的编程思想的理想实例。

现在面向对象的计算机编程语言很多,都可以编程来实现。

本毕业设计论文介绍用Java语言设计一个“俄罗斯方块”游戏的过程,整个游戏系统是一个应用程序(JavaApplication),不再是嵌入到网页里的那种小应用程序(Applet);并使用了最新的Java2标准Swing组件,使得界面更具有专业效果。

游戏设计过程中涉及到游戏框架、游戏界面的编写、菜单处理、变量的定义、算法设计以及预览功能的实现。

同时,还为游戏添加了其他功能,如设计About对话框,实现游戏分数的存档,为游戏添加状态栏。

通过本次毕业设计可以学到如何定义类和类成员及其方法,如何使用JBuilder来创建工程,如何创建一个对话框,并将对话框和主应用程序联系起来。

关键词:

俄罗斯方块,应用程序,Swing组件,Java

 

ABSTRACT

Tetrisisaclassicanddurablegame,andithasbeenpopularallovertheworld.Andit’sanidealsampleforleaningobject-orientedprogramming.Itcanbeimplementedbydifferentobject-orientedprogramminglanguagesthatexistnowadays.

Thisthesisdescribestheimplementingprocessofthisgameinjavalanguage,whichisimplementedinapplicationforminsteadofappletthatembeddedinthewebpages.Theuseofswingcomponentmakestheinterfacelookmoreprofessional.Thegamedesignsintheprocesstoinvolvetothegameframe,thecompilationofgamecontactsurface,menuprocessing,thedefinitionofvariable,thedesignofalgorithmaswellastherealizationofthefunctionofpreviewareinvolvedintheprocessofdesigningthisgame.Meanwhile,someotherfunctionsarealsoaddedtothegame,suchasdesigning“Aboutdialog”,achievingthearchiveofthegamescores,addingstatusbartothegame.

Throughthisthesiswecanlearnhowtodefineclasses,classmembersandthemethods,howtouseJBuildertocreateworks,howtocreateadialog,andhowtolinkthedialogboxandthemainapplication.

Keywords:

TheRussianBlock,theapplicationprocedure,theSwingmodule,Java

第1章绪论

1.1研究背景

游戏开发至今已经有30多年,在这个短暂的时期里,随着硬件平的提高,游戏开发新技术层出不穷,经典游戏比比皆是。

1.1.1游戏的历史

(1)电子游戏的起源

真正的电子游戏机产生于20世纪70年代。

1971年,麻省理工学院的学生NolanBushnell设计了世界上的第一个业务用游戏机(俗名街机),叫做《电脑空间》。

这台游戏机用一台黑白电视机作为显示屏,用一个控制柄作为操纵器,不过由于市场因素这款游戏以失败告终。

但是最后他在电子游戏的发展上取得了非凡的成就。

上面介绍的是专用机游戏的历史,而最早的电脑游戏可以追溯到1972年,一个叫Crowther的工程师用当时最流行的主机――DEC公司的PDP-10编写一段简单的FORTRAN程序。

在这个程序里,Crowther设计了一张地图,地图上不规则的分布着陷阱,游戏者必须寻找路径避开陷阱。

这个程序被公认为是最早的电脑游戏程序。

1989年,BroderBund公司的设计师乔丹.麦克纳根据阿拉伯民族的古老传说《一千零一夜》在Apple平台上制作了一部动作冒险相结合的电脑游戏――波斯王子。

这个游戏获得了第一作,它代表了当时电脑技术的最高水平。

1986年,任天堂公司发售了一款真正的游戏巨作――超级马里奥。

20世纪80年代IBMPC兼容机的出现打破了Apple公司的垄断地位。

到了20世纪90年代,游戏业才真正成熟起来,成为了一种产业。

由于PC机价格非常低而且硬件速度越来越快,游戏逐渐成为人们生活中不可缺少的一部分。

游戏产业也逐渐发展成熟。

(2)图形硬件的发展

图形硬件的飞速发展是近些年来的事情,部分原因是来自工业方面的压力,例如在军事和医疗方面对于实时图形的需求很强烈,而交互娱乐产业也极大的推动了图形硬件的发展。

技术上的因素同样也推动着图形硬件的发展,许多图形算法可以很容易地表达为并行方式,这样硬件执行的效率变得很高。

摩乐定律也起了作用,越来越多的晶体管可以集成到一块单独的芯片上。

在所谓的GPU(图形处理器)概念出现以前,特殊的图形硬件只出现在诸如SGI和E&S系统里面,这些硬件价格太昂贵,不过这些公司提供了第一代基于硬件的顶点变换和纹理映射的解决方案。

1.1.2游戏的意思与涵义

游戏这个名称一直就存在于每个人的日常生活中,如猜拳游戏、猜谜游戏、大地游戏、球类游戏等,林林总总,不胜枚举,甚至于有些流行歌曲把人生也比喻为游戏,好比“一场游戏一场梦”。

因此,游戏对于现代人的成长历程,绝对是一个不可或缺的重要角色。

“游戏”,最简单的定义,就是一种供人们娱乐休闲的快乐元素。

从更专业的角度形容,“游戏”是具有特定行为模式、规则条件、身心娱乐及输赢的一种行为表现。

这种行为表现具备以下4个要素:

行为模式:

“游戏”最简单的要素就是游戏有特定的流程模式,这种流程模式贯穿于整个游戏的行为,用户必须依照它的模式流程来执行。

倘若一种游戏没有了特定的行为模式,那么就没有执行的行为;在没有执行的行为之后,这个游戏也玩不下去了。

举个例子来说,如果猜拳游戏没有了剪刀、石头、布等行为模式,那么这还能叫做:

“猜拳游戏”吗?

所以不管游戏的流程有多么复杂还是多么简单,一定要有特定的行为模式。

条件规则:

当游戏有了一定的行为模式后,接着就必须制定出一系列的条件规则。

简单来说,这些游戏的条件规则就是大家必须去遵守的游戏行为守则,只要是大家一致以为的游戏行为,在游戏中,玩家就必须遵守它,如果不遵守这种游戏行为,那么就失去了公平性。

如同一种简单的球赛,打球的英文解释可以用PLAYGAME来加以说明,按照英文字面上的解释,它就是执行游戏的行为,而球赛必须有一定的条件规则,并且参与者都要必须去遵守它,不能遵守它就叫做“犯规”。

所以不管是什么游戏,它都会具备一组规则条件,在游戏进行的时候才会有足够的公平性。

娱乐身心:

一种游戏所带来的娱乐性,关键就在于为玩家所带来的刺激感,这也是游戏的精华所在。

简单来说,不管是很多人玩的游戏,还是一个人玩的单机游戏,游戏本身就会存在它的娱乐和刺激性,使得玩家们想要去玩它。

输赢:

其实针对游戏而言,输赢是所有游戏的最终目的。

一个没有输赢的游戏,也就没有了它存在的意义,如同我们常常接触到的猜拳游戏,说穿了最终目的就是为了分出胜负而己。

一般而言,游戏又可以分为动态和静态两种形态。

动态的游戏必须配合肢体动作,如猜拳游戏;而静态游戏则是较偏向思考的行为,如同纸上游戏。

然而不管是动态或是静态游戏,只要具备上述4项组成要素,都可以将它称为“游戏”[1]。

1.2研究内容

计算机游戏中包含成百上千可以移动并相互作用的实体,这些实体有着各自不同的位置、速度、状态、颜色等属性,为每一个实体单独编写代码是低效率的做法。

利用Java面向对象的特性,先创建一个抽象、通用的游戏实体类,再创建该类个性化的子类,从而提高系统开发效率[2]。

利用数组及敏捷开发思想开发俄罗斯方块游戏,以数组为界面显示的数据结构,设计界面类。

设计方块类,先设计抽象类,通过应用测试优先原则,设计简单方块让抽象类的测试通过。

在逐步的迭代与重构中来响应不断变化的需求,来实现所有类。

最后通过界面的优化来完成系统的开发[3]。

在对Java程序设计这门课程进行了系统学习后,运用课程中学到知识进行设计编写的软件。

本程序涉及到的Java模块有:

图形界面(GUI),线程,以及基本输入输出等。

第2章开发工具的选择

在这里,根据各种开发工具的比较,和现有工具及书籍等条件的制约,决定使用JBuilder2006。

美国 Borland 软件公司推出JBuilder® 2006。

这是Borland屡获殊荣的Java®综合开发环境 (IDE)的最新版本,专为加快企业级Java应用的开发而设计。

JBuilder 2006的崭新功能可帮助软件团队更有效率地实时、跨地域进行协作。

新功能包括对等开发人员协作、集成需求管理、源代码管理及单元测试等对应用软件生命周期的支持。

JBuilder及Optimizeit都是Borland应用软件生命周期管理 (Application Lifecycle Management,简称ALM) 的重要组成部分,能与其它Borland的ALM产品紧密集成,为开发人员提供环环紧扣的工具,提升自身以致团队的生产力。

  加速分布式Java开发。

  JBuilder 2006针对分布式团队 — 包括外包、离岸、远程或分布式团队的独特需要而设计。

新增的对等协作功能方便分散在不同地点的开发人员一同修改源代码、进行可视化设计及纠错。

  有Gartner研究指出 ,当团队内存在地域、文化及架构等差异时,想要成功地进行应用开发,就需要团队成员能更紧密地协作。

因此,从事分布式软件开发的机构应向技术提供商要求能降低全球协作式应用的交付除的工具套件。

只有对这项挑战未雨绸缪的IT团队才能更有把握在竞争日益激烈的开发环境中取得成功。

近年新兴的灵活编程方法,包括极限编程 (Extreme Programming),均致力于降低各种变化对软件开发的影响和风险,甚至利用这些变化来提升客户的竞争优势。

这些编程方法提倡开发团队与业务专家紧密协作,要求他们频繁地亲自进行沟通,故此这些方法传统上只有小型及集中式的团队才做得到。

JBuilder 2006有助于更大型及更分散的开发团队进行实时的对等协作,使他们能够使用配对编程技巧。

有了JBuilder 2006,两个甚至更多的编程人员便能一同工作,就同一个设计、算法、源代码及测试进行协作,并能共同解决难题或发挥创意。

  另外,JBuilder 2006还具有以下优点:

JBuilder 2006可以帮助开发人员发现并减少软件的保安漏洞。

它集成了Borland的合作伙伴Fortify Software的崭新技术,能分析源代码并按照业界最佳标准及自动源代码审核来找出安全漏洞。

降低采用新技术标准的复杂度。

JBuilder 2006可支持Enterprise JavaBeans®、网络服务、XML及数据库应用开发,并对几乎所有Java开发环境提供以业界标准为基础的支持。

它还具有从J2EE 1.4到JDK® 5.0畅顺转移功能。

简化项目管理及集成。

JBuilder 2006提供中央化环境,能协调整个开发流程,简化了开发工具的管理。

它采用开放式架构,方便集成其它工具,让开发团队灵活地使用已有的软件投资。

便于扩展。

JBuilder 2006让开发人员使用数以千计的第三方嵌入式工具并定制最适合个人使用习惯的环境。

需求管理或漏洞追踪等流程也具备弹性,可按需要修改。

团队还能够设定开发环境的“个性”,为每个项目制定及精简相关接口。

JBuilder2006的主要界面如图2-1所示:

图2-1JBuilder主要界面

第3章可行性研究

3.1设计目的

综合运用在校期间所学理论知识和技能,设计开发俄罗斯方块,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,提高工程实践能力,为将来实际工作打下坚实的基础。

用Java语言完成游戏俄罗斯方块的设计与实现,编写该程序,对Java程序设计有更深刻的了解。

实践Java语言的应用,以及培养自己良好的Java编程风范,实践设计模式。

3.2可行性研究前提

基本需求:

系统开发的总体任务是实现游戏的可操作性、美观性、及时性。

开发过程遵循软件工程规范,可采用结构化或面向对象分析设计方法。

主要实现windows的GUI程序开发,对游戏中的图形图像进行键盘控制。

游戏者可以通过上下左右键来对游戏进行操作。

主要开发目标:

开发过程遵循软件工程规范,可采用结构化或面向对象分析设计方法。

主要实现windows的GUI程序开发,对游戏中的图形图像进行键盘控制。

游戏者可以通过上下左右键来对游戏进行操作。

条件假定和限制:

由于本软件目前是我的初次版本,可能还存在一些问题。

如果该软件提高版本,本软件需要根据游戏者的要求进行进一步的修改。

可行性研究所采用的方法和步骤:

通过研究分析俄罗斯方块所具备的能力及实现的方法、确定主体结构。

利用现阶段我所能达到的能力,以最简洁、最容易的办法,边开发边测试边修改,实现一个初级游戏软件。

  评价尺度:

由于本软件是一个初级产品,对其要求不是太苛刻,所以能够达到俄罗斯游戏的一般功能即可。

3.3可行性分析

3.3.1管理可行性

该游戏软件为首次开发,目的只为提高工作自身素质和检查学习Java的效果,所有功能均根据基本需求所做,便于管理,所以在这方面是可以实现的。

3.3.2经济可行性

由于本游戏的主要背景是毕业课程设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能够运行Java软件的电脑便可,所以不用考虑到经济问题。

3.3.3技术可行性

可用于本游戏的编程语言有VB,Java,Delphi等,考虑到用于编写程序的困难度,和对语言的了解程度,选择Java作为编程语言。

需要对变量定义、变量初始化、界面初始化、游戏初始化、然后进入游戏、处理游戏过程中的各种操作。

3.3.4社会可行性

本游戏的开发作为毕业课程设计以巩固先前所学的知识,以个人为单位,仅供个人平常娱乐所用,无须考虑有可能造成的社会影响,不用考虑到法律、版权等的社会因素,所以在这方面是完全可行的。

3.4本章小结

本章在明确设计目的的前提下,从基本需求,主要开发目标,条件假定和限制,可行性研究所用的方法和步骤,评价尺度等方面进行了可行性前提的分析。

从而得出了管理可行性,经济可行性,技术可行性,社会可行性的结果。

综上所述,本游戏软件的技术成熟、完备。

各方面均无重大问题,因此本游戏软件可开始着手编写。

 

第4章需求分析

4.1引言

对软件需求完全理解对于软件开发工作的成功是至关重要的,需求说明的任务是发现、规范的过程,有益于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,便于采用工程方法开发软件,提高软件的质量,便于开发人员、维护人员、管理人员之间的交流、协作,并作为工作成果的原始依据,并且在向潜在用户传递软件功能、性能需求,使其能够判断该软件是否与自己的需求相关。

4.2游戏的需求

随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、反T字型)下落填充给定的区域,若填满一条便消掉,每个方块组可以旋转改变其形状,每个方块组有不同的分数,刚出现时就有分数,消去行不记分。

当落下的方块组的数量达到一定数量时,过关,速度也会相应的提升,但是到某一关后速度不再提升。

若在游戏中各形状填满了游戏区域,则游戏结束。

游戏功能要求如下:

游戏界面需求:

良好的用户界面,有分数显示和级别显示。

让方块在一定的区域内运动和变形,该区域用一种颜色表明,既用一种颜色作为背景,最好设为黑色。

还需用另一种颜色把黑色围起来,宽度适中,要实现美感。

游戏形状(方块)需求:

良好的方块形状设计,绘制七种常见的基本图形(长条形、Z字形、反Z形、田字形、7字形、反7形、反T字型),各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。

键盘处理事件:

方块下落时,可通过键盘方向键(W、S、A、D键)对该方块进行向上(变形),向下(加速)、向左移动、向右移动。

显示需求:

当不同的方块填满一行时可以消行,剩余方块向下移动并统计分数。

当落下的方块组的数量达到某一值时,过关,即级别提高一个等级,相应的方块组下落的速度也随之变快。

本软件需求通过键盘进行操作,在Windows的操作系统下,利用键盘的W,S,A,D键对方块进行移动变形,要使用键盘的接口事件。

4.3方案论证

学校现已开设的课程有PASCAL,C,C++,Java,就目前了解,Java,C++可编写俄罗斯方块程序。

4.3.1C++的优点

C++是对C语言的扩充,从simula67中吸取了类,从algol68中吸取了运算符的一名多用、引用和在分程序中任何位置均可说明变量,综合了ada的类属和clu的模块特点,形成了抽象类,从ada,clu和ml吸取了异常处理,从bcpl中吸取了用//表示注释。

  C++保持了C语言的紧凑、灵活、高效以及易移植性强等优点,它对数据抽象的支持主要在于类概念和机制,对面向对象风范的支持主要通过虚拟机制函数。

由于C++既有数据抽象和面向对象能力,不运行性能高,加上C语言的普及,而从C到C++的过渡较为平滑,以及C++与C的兼容程度可使数量巨大的C语言程序能方便地在C++环境中复用,使得C++在短短几年内能迅速流行,成为当前一种面向对象程序设计的主流语言。

尽管C++当初的设计本意是帮助管理大型程序,但其用途并不仅限与此。

C++的面向对象的特性可有效地用于实际的程序设计工作。

C++常常用于设计编辑器、数据库、个人文件系统以及通讯程序等。

而且,由于C++共享C的效率,所以用C++可以构成很多高性能的系统软件。

4.3.2Java的优点

Java是定义位于网络计算的计算机语言,它几乎所有的特点也是围绕着这一中心展开的并为之服务的,这些特点使得Java语言特别适应于用来开发网络上的应用程序;另外,作为一种面世较晚的语言,Java也集中体现和充分利用了若干当代软件技术新成果,如面向对象、多线程等,这些也都在它的特点中有所反映。

(1)平台无关性

平台无关性是指Java能运行于不同的平台。

Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。

使用Java编写的程序能在世界范围内共享。

Java的数据类型与机器无关,Java虚拟机(JavaVirtualMachine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。

(2)安全性

Java的编程类似C++,学习过C++的读者将很快掌握Java的精髓。

Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。

Java对程序提供了安全管理器,防止程序的非法访问。

(3)面向对象

Java吸取了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。

类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。

程序员只需把主要精力用在类和接口的设计和应用上。

Java提供了众多的一般对象的类,通过继承即可使用父类的方法。

在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。

Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。

(4)分布式

Java建立在扩展TCP/IP网络平台上。

库函数提供了用HTTP和FTP协议传送和接受信息的方法。

这使得程序员使用网络上的文件和使用本机文件一样容易。

(5)健壮性

Java致力于检查程序在编译和运行时的错误。

类型检查帮助检查出许多开发早期出现的错误。

Java自己操纵内存减少了内存出错的可能性。

Java还实现了真数组,避免了覆盖数据的可能。

这些功能特征大大提高了开发Java应用程序的周期。

Java提供:

Null指针检测、数组边界检测、异常出口、Bytecode校验。

(6)简单易学

最初开发java语言的本意是为家用电器的程序控制而用的。

它坚持面向对象基本原理,又避免了运算符的一名多用、多重继承等复杂概念[2]。

4.3.3方案的选择

面向对象是一种认识世界的方法,是一种程序设计方法。

面向对象的观点认为,客观世界是由各种各样的实体,即对象组成的。

每种对象都有自己的内部状态和运动规律,不同对象间的相互联系和相互作用就构成了各种不同的系统,并进而构成整个客观世界。

按照这样的思想设计程序,就是面向对象的程序设计。

面向对象的程序设计吸取了结构化程序设计的先进思想,并把他们同几个支持用户用新方法进行程序设计的有力概念结合在一起。

所有面向对象的程序设计语言一般都包含三个概念:

封装、多态性和继承性。

这种方法要求语言必须具备抽象、封装、继承和多态性这几个关键要素。

面向对象的程序设计,是通过数据和代码建立分块的内存区域,以便提供对程序进行模块化的一种程序设计方法,这些模块可以被用作样板,在需要时再建立其副本。

C++和Java在面向对象这方面都比较强,但是C++为了与C语言兼容,其实包含了些面向过程的成分;Java除了C++中非面向过程的部分,其程序编写过程就是设计、实现类,定义其属性、行为的过程。

还有Java特有的“沙箱”机制是其安全性的保障,同时它去除了C++中易造成的错误指针,增加了自动内存管理等措施,保证了Java程序运行的可靠性。

所以经过比较后,决定采用Java语言编写俄罗斯方块。

4.4本章小结

本章从游戏界面,游戏形状,键盘处理,显示等各功能方面进行了需求分析;对C++进行了简单的介绍,并且从平台无关性,安全性,面向对象,分布式,健壮性,简单易学等方面介绍了Java的优点,最后主要根据面向对象这一方面进行比较,从而得出采用Java语言编写俄罗斯方块的结论。

 

第5章概要设计

5.1游戏设计分析

Java为纯面向对象(Object-Oriented)程序语言,从面向对象的观念出发,本程序可分为以下几个对象:

(1)方块类型数据

(2)程序运算逻辑

(3)绘图

(4)显示平台

分析对象的技巧在于它的重复利用及维护效率。

试想,若要设计出来的程序在不同的显示平台上执行,就要做大幅度的更动甚至重写,这样就失去了面向对象属性,所以在本程序分析时将不变与易变的因素分别做成对象,如方块类型数据及程序运算逻辑就是不变的项目,而绘图及显示平台会因为环境而有所不同属于易变的项目。

5.1.1方块类型数据

方块类型虽然运送不同,但状态与行为都是相同的。

5.1.2程序运算逻辑

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1