劳拉方块游戏设计与实现.docx
- 文档编号:30291896
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:74
- 大小:466.12KB
劳拉方块游戏设计与实现.docx
《劳拉方块游戏设计与实现.docx》由会员分享,可在线阅读,更多相关《劳拉方块游戏设计与实现.docx(74页珍藏版)》请在冰豆网上搜索。
劳拉方块游戏设计与实现
劳拉方块游戏设计与实现
摘要
劳拉方块是一款老少咸宜的小游戏,和俄罗斯方块类似,其中加入了等级的概念。
游戏中的每一块落下的方块都由四个小色块组成,这四个小色块存储在一个数组的四个元素中,计算机随机产生不同类型的七种方块,根据计算机时钟控制它在一定的时间不停的产生。
用户可以通过上下左右四个方向键(方向键的事件处理)来实现方块的翻转、向左、向右和向下。
然后程序根据这七种方块对叠成不同的模型。
论文首先描述了游戏的历史和开发环境,然后完整地展现了软件定义,可行性研究、需求分析、概要设计、详细设计和软件测试,整个开发过程贯穿软件工程的知识体系。
此次设计在Linux下,以C++作为开发语言,在Qt平台上进行游戏的设计与实现,最终完成了代码部分的全部工作。
能够设计出一款小游戏,寓教于乐,对我来说十分有意义。
关键词:
游戏开发;Qt;控制;C++
Laura box GameDesign andImplementation
Abstract
Lauraboxisagameforallages,andlikeTetris,whichaddedtheconceptofclass.Eachgameconsistsofafallingblockconsistingoffoursmallblocksofcolor,thesefoursmallpatchesstoredinanarrayoffourelements,thecomputerrandomlygeneratedsevendifferenttypesofboxes,accordingtothecomputerclocktocontrolittosometimetostopproduction.Userscanupanddownthefourarrowkeys(arrowkeyseventprocessing)toachievethebox,flip,left,rightanddown.ThentheprogrambasedonthesesevenboxesforDiechengdifferentmodels.
Paperfirstdescribesthegame'shistoryanddevelopmentenvironment,andthenshowthecompletesoftware-defined,feasibilitystudies,needsanalysis,outlinedesign,detaileddesign,andsoftwaretestingthroughouttheentiredevelopmentprocessofknowledgeofsoftwareengineering.
ThedesignunderLinux,inC++asadevelopmentlanguage,theQtplatformdesignandimplementationofthegame,thefinalcompletionofalltheworkthecodesection.Abletodesignasmallgame,entertaining,verymeaningfultome.
Keywords:
gamedevelopment;Qt;control;C++
1.绪论
1.1课题研究的目的及意义
劳拉方块曾经是一款非常热门的小游戏,频频出现在电视机游戏和掌上游戏里。
它简单易上手,但是变化无穷,充满了挑战。
相信很多我的同龄人还记得小时候坐在小霸王游戏机前,紧握着游戏手柄,盯着屏幕上的游戏,玩到忘记了吃饭。
大部分人应该都是在那个时候接触并喜欢上这款游戏的。
人们不仅从这款游戏中得到了乐趣,而且从其中收获了成就感。
在游戏设计领域,劳拉方块不仅仅是一款充满其妙体验的小游戏,更是一个启蒙。
无数人编写游戏程序都是从劳拉方块开始的,因为这既是一个检验RAD开发工具的好方法,也是检验一个人对开发语言、环境和基本数据结构知识熟练程度的便捷途径。
本次的设计与实现是在Linux[1]平台上完成的。
1.2电子游戏的发展状况
游戏最早的雏形,可以追溯到人类原始社会流行的活动:
扔石头、投掷带尖的棍子。
这些最早的游戏显然是以增强生存技能作为初衷。
社会进步后,棋牌类游戏、竞技类游戏甚至电子游戏开始出现。
电子游戏是其中的主角之一。
劳拉方块在红白机时代曾是电子游戏中的天王之一,我国的用户大部分是通过红白机了解、喜欢上它的,无数人和它一起留在了那个年代。
对于普通用户来说,它容易上手,操作简单,且游戏过程中变化无穷,在其多个衍生版本中,更是出现了联机版劳拉方块,使其成为一款竞技游戏,给用户提供了一个展现自己高超水平的场所。
劳拉方块随着PC机的更迭不断演变,现在已经成为经典。
这款游戏的核心是通过不断变化的方块来训练人的反应能力。
随着开发工具的更新换代,现在这款游戏已经成为学习软件设计入门的一个经典案例。
本文中实现劳拉方块是利用数组作为方块的数据结构[2],对于初学者可仿照此类方法进行设计,从而了解游戏软件的设计与开发过程。
1.2.1电子游戏及其分类
电子游戏,也就是运行在家用电脑、家用电子游戏机或是掌中宝游戏机及街机上的电子游戏程序。
电子游戏作为一款互动娱乐型软件,结合了剧情、程序、动画、美术、音乐等技术,从电子游戏的分类来看,有着多种分类方式。
按照游戏类型,传统的游戏分类将其分为第一人称射击游戏、角色扮演游戏、即时战略类游戏、策略类游戏等。
而按照游戏运行平台的不同,又可以将电子游戏分为手机游戏、在线游戏、单机版PC游戏、游戏机游戏、互动电视游戏。
现在,虽然未制定标准,但行业内将游戏进行标准分类,分为街机游戏、网络游戏、单机版PC游戏、互动电视游戏四大类。
论文中采用此标准。
在互联网(局域网)技术出现以前,电子游戏都是以单机版游戏的形式出现的。
互联网技术出现后,玩家之间实现了同时在线娱乐,电子游戏的一部分步入网络游戏的阵营。
所谓“网络游戏”,是指通过人与人之间的互动达到交流、休闲和娱乐的目的。
网络游戏的实现,大大增加了游戏的互动性、真实性,丰富了电子游戏的内涵。
现在,随着计算机与网络技术的发展,电子游戏获得了长足的进步,已经成为当今社会不可缺少的精神食粮。
1.2.2电子游戏发展现状
电子游戏最初诞生于美国,一个还在MIT就读的学生于1971年设计了世界上第一个业务用游戏机[3],游戏的名字叫做《电脑空间》。
继第一款游戏问世之后,各类游戏开始纷纷被制作出来娱乐玩家。
以欧美市场和日本市场最为成功。
目前,世界第一大游戏市场仍是美国,其遵循以发行商为主的产业开发链模式,根据美国市场调查公司NPDGroup调查统计,美国2006年游戏总销售金额(包括家用、掌上型主机及软件)为137亿美元,占了全球游戏市场的43%。
日本的游戏市场也是渊源已久。
从上世纪六十年代初的街机,到六七十年代的家用游戏机,再到八九十年代的掌上游戏机,经过30多年的发展,如今的日本游戏产业已经成为第一娱乐产业,电玩业已经变成国家的经济支柱之一,每年占到GDP的1/5。
韩国则是当今网络游戏产业最发达的国家之一。
如今国内市场超过60%的游戏产品都来自韩国的游戏软件开发商。
韩国的游戏产业一度得到政府的大力支持。
由文化观光部出面组建韩国游戏支援中心[4],向韩国游戏产业提供从资金到技术上的多方面支援;成立游戏投资联盟,政府每年向游戏产业投入的资金多达500亿韩元,并为游戏企业提供长期的低息贷款;设立信息化基金和文化产业基金,为游戏产业服务;对指定的风险企业实行各种税制优惠政策,减少甚至免除游戏企业的税务负担;建设游戏产业基地以扶持中小游戏企业的发展;对从事游戏产业的高科技人才免除两年的兵役。
此外,韩国还开设了众多的游戏院校,以大力培养游戏人才,从而为游戏生产提供了基础保障。
与电子游戏发达的国家相比,在电子游戏方面,我国还与它们存在较大的差距。
目前,我国的游戏市场正处在发展阶段,但在市面上流动的游戏软件主要还是来自于美国、日本、韩国等地,但在一些政策和市场的机遇下,国内的厂家正在蓬勃发展,国产原创游戏即将成为游戏的发展主流。
中国的游戏产业经过80年代初期台湾厂商的探索至90年代,开始了自己的研发、发行的历程,直至网络游戏的风行,中国的网络游戏开始有了飞速的发展。
1983年,智冠科技有限公司在中国台湾成立,为全球第一家签订授权重制中文版产品代理销售合约的公司,2000年智冠在台湾股票上市,2002年其控股的中华网龙在台湾上市。
1996年底,UBISOFT上海分公司暨上海育碧电脑软件有限公司成立。
同年,全球游戏软件领军企业EA在中国上海成立办事处。
1997年,由尚洋公司制作的《血狮》正式上市。
1997年,北京新天地互动多媒体技术有限公司成立,该公司引进了《古墓丽影III》(TombRaiderIII)、《盟军敢死队》等著名欧美游戏,并在1999年在中国率先掀起“游戏软件价格革命”,全面推行50元的价格体系,从此正版游戏价格开始贴近大众消费者。
1999年,业内估算中国电脑游戏市场(正版)约1.5亿元人民币。
2000年,大陆华彩软件代理发行第一款中文MMORPG《万王之王》正式推出,该游戏于1999年在台湾发行,由台湾雷爵资讯(Lager)开发。
也在2000年,继《万王之王》、《石器时代》、《网络三国》在台湾上市之后,游戏桔子推出了《天堂》,游戏桔子成立于1995年,1999年以《便利店》在台湾奠定了地位。
《天堂》这款由韩国著名游戏公司Ncsoft研发的网络游戏不但在本国大获成功,也在台湾再次夺冠。
2001年初,北京华义在中国大陆地区正式推出了《石器时代》,华义国际股份有限公司于1993年在台北成立,2001年在台湾股票上市。
《石器时代》成为大陆当时最流行的网络游戏。
2001年,天人互动软件技术有限公司在北京成立。
当年与SEGA结成PC游戏业务的战略合作关系,发行了《樱花大战Ⅱ》《文明Ⅲ》《无冬之夜》等经典游戏,2002年,引进在欧美网络游戏《魔剑》(ShadowBane),这是首款在中国测试的欧美网络游戏。
2001年5月,“联众世界”经过3年多的迅速成长,以同时在线17万人、注册用户约1800万的规模,成为当时世界用户数量第一的在线游戏网站。
2005年1月21日,中央电视台报道:
我国网络游戏产业当年增加了50%,今后几年都将以50%以上的速度增长;第一届中国网络游戏年会报道:
中国国内网络游戏2004年规模达24.7亿元,2009年规模将达到109.6亿元。
1.3研究的主要内容
俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。
这款游戏最初是由苏联的游戏制作人AlexPajitnov制作的,它看似简单但却变化无穷,令人上瘾。
相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。
从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,我在设计中在一个图片框中构造了一些的网状小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,因此我总共设计了7种造型,每种造型又可以通过旋转而变化出2到4种形状,利用随机函数在一个预览窗体中提前展示形状供用户参考,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,最后就可以得出用户的分数。
1.4研究的目的和意义
那么研究基于Qt的劳拉方块游戏有什么意义呢?
虽然目前劳拉方块游戏已经有各种语言的不同版本,并且已经将其搬上了网络的平台,单人、双人单机对战和双人网络对战等各种模式均已被大众熟知。
由于开发平台不统一,造成软件的管理和使用极不方便,并且容易受到软硬件环境更新的影响,限制了这些新技术在科研生产中发挥更好的作用.如果舍弃原有软件而重新开发,将会耗费大量的人力和资金,而且浪费了许多成熟的软件成果。
而Qt在源代码级上实现了跨平台特性,极大的支持了跨平台通用软件的开发。
Qt可以用同一个源程序在不同平台上编译链接,生成目标代码,并取得相同的运行效果,称为“一次编写,随处编译”,利用这种方法充分实现了程序的跨平台运行。
这种基于源代码的跨平台特性不仅解决了性能的问题,而且可以发挥各个平台的优势,充分利用每个平台自身的特点;并且即可以在新环境下实现原有软件的功能和特点,减少开发费用,还可以改进原有软件的不足,增加新的需求,从而提高软件的质量,延长软件生命期。
因此,利用Linux下基于Qt的应用程序开发是一个非常有意义的课题,具有重要的研究和商业价值。
另外,通过本游戏的设计,检验了学习效果和动手能力,进一步深入Qt的学习,提高自己的编程水平,从而达到理论与实践相结合的目的。
在成为一个真正的游戏开发者的路上,劳拉方块是一个完美开始。
为什么?
因为它包括任何一个游戏中所有的元素。
并且,不需要艺术家般的才能就能做出非常好看的劳拉方块游戏。
任何一个能画出方块的人,每个作图形程序的人,就能做出商业品质的劳拉方块游戏。
以劳拉方块开始还有另外一个好处,不仅能做出一个完整的既好玩又容易上瘾游戏,而且它看上来和那些商业版本没什么区别。
方块就是方块,不管是谁画出它们的,而且tetraminos(劳拉方块中使用的形状)也不过是一些方块的组合。
劳拉方块拥有所有游戏共通的独立成份。
它有一个游戏循环(这个过程被反复执行直到游戏退出)。
这个游戏循环读取玩家的输入,处理这个输入,然后更新游戏的元素(下落的tetraminos),并且检查是输还是赢。
以后要做的所有的简单的游戏都要用到这些东西,所以学习这个过程并且实现它是非常重要的。
当第一次完成它之后,以后再做游戏时就能看出那个游戏有多难以及要花多长时间。
如果没有完整的完成过这些,哪怕一次,就永远不能完整地正确领会其中的每个元素。
当做大的项目时,就更不能确定其复杂性及所要的时间。
如果甚至不能正确地领会这整个过程(因为你没能完成它),可能是没能建立一个合适的时间表或估计合适的时间,更有可能的是不够努力。
还有,玩劳拉方块可以练习人的反映能力,开始时快速的下降会让人手无足措,但适应了之后就会发现自己的反应力变的很快了。
另外长时间的手指活动可以让人血液流通加快有利健康。
还有劳拉方块高手都知道要想赢,就要有远大的布局,决不能只局限于一点一点的减,这在无形中就提高了人的智慧。
2.可行性研究
2.1设计目的
通过本游戏的设计,结合自己在杰普软件所学到的知识,设计开发劳拉方块游戏,能培养自己的动手和思考能力,初步掌握软件工程的系统理论,加强自身对Qt基础编程知识的理解,提高自己编写程序的水平,从而达到理论与实践相结合的目的。
2.2软件的定义
该游戏软件开发的主要任务是实现游戏的可视化界面操作。
开发过程遵循工程开发规范,采用C++来实现界面和事件的控制,用户可以通过菜单栏的相应选项和上下左右四个方向键对游戏进行可视化的操控。
游戏的开始、结束、方块变换、积分以及等级等功能都可以通过这些来进行调节。
本游戏开发过程中还有很多生疏和疑问,实现的功能也较为简单,旨在能更好地了解C++的编写技巧和规范,为今后的工作积累经验。
2.3可行性分析
(1)技术可行性:
C++语言中集成了很多标准类库,可以直接调用,Qt中大量的图形界面库和优良的封装和跨平台机制,使得实现界面的可视化以及事件的操控简单了很多。
(2)经济可行性:
本游戏的开发旨在提升自己的语言逻辑水平,完成毕业设计,考虑到的其他因素并不多,外界阻力很小,对经济要求不高。
(3)社会可行性:
本游戏设计完成后仅作毕业设计和私人使用,且设计内容健康,不会违反法律,不会对社会造成不良影响。
2.4结论意见
综上所述,本游戏软件的技术成熟、完备。
各方面均无重大问题,因此本游戏软件可开始着手编写。
3.需求分析
3.1引言
对软件需求完全理解对于软件开发工作的成功是至关重要的,需求说明的任务是发现、规范的过程,有益于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,便于采用工程方法开发软件,提高软件的质量,便于开发人员、维护人员、管理人员之间的交流、协作,并作为工作成果的原始依据,并且在向潜在用户传递软件功能、性能需求,使其能够判断该软件是否与自己的需求相关。
3.2游戏需求
28种状态的方块随机产生,自由下落,落下时可由玩家用上、下、左、右控制键控制翻转和移动,以便以玩家所需要的形态和位置落下。
如果落下时,方块的方格能填满某一行,则这一行可消去。
消去一行后,游戏可给玩家加分,若由存在空格的方块填满整个窗口,则游戏失败。
游戏功能需求如下:
游戏界面需求:
设计良好的游戏界面可以让玩家充分感受到游戏带来的娱乐性,在设计好的一定的区域内运动和变形,不同的色块让其拥有不同的颜色,这样看起来会有一定的美感。
游戏形状需求:
用数组作为存储方块8种状态的数据结构,即长条形、Z字形、反Z形、田字形、7字形、反7形、T字型,各个方块要能实现它的变形,可设为顺时针或逆时针变形。
键盘处理事件需求:
方块下落时,可通过键盘方向键(上、下、左、右键)对该方块进行顺时针变形、逆时针变形、向左、向右移动,D键可以使方块加速下落,SPACE键可以使方块瞬间落下。
鼠标处理事件需求:
通过点击菜单栏中相应的菜单项,可以实现游戏的开始、结束,方块形状的变换,分数、等级的显示,以及游戏帮助等功能。
显示需求:
当不同的方块填满一行时可以消行,剩余方块向下移动并统计分数。
当达到一定分数的时候,会增加相应的等级。
3.3开发环境
介于开发工具和软件使用的环境,我选择了如下的开发环境:
操作系统:
MicrosoftWindows7Ultimate(32位)
内存:
3G
硬盘:
500G
CPU:
Intel(R)CORE(TM)I5CPUM480
交互工具:
键盘/鼠标
显示器:
通用显示器
开发工具:
Qt5.3
3.4接口控制
本游戏通过键盘进行操作,在Linux操作系统下,利用键盘的上、下、左、右、D以及SPACE键对方块进行移动变形,要使用键盘的接口事件。
3.5方案论证
学校现已开设的课程有C语言、C++、java,我自学了Qt,加上自己浏览了一些其它相关的资料,通过网上以及图书馆的资料,知道可以通过C,C++和Qt,VB,Delphi,Java实现劳拉方块游戏的设计。
下面简单介绍下VB、Java、Qt各自的优缺点:
3.5.1VB的特点
全称VisualBasic,它是以Basic语言作为其基本语言的一种可视化编程工具。
在中国乃至全世界都能看到它的身影,它曾是在中国最为流行的编程工具,到现在还占据着非常重要的地位,对于它的好坏大家都有一定的了解,VB作为一种较早出现的开发程序以其容易学习,开发效率较高,具有完善的帮助系统等优点曾影响了好几代编程人员,但是由于VB不具备跨平台这个特性,从而也决定了VB在未来的软件开发中将会逐渐地退出其历史舞台;它对组件技术的支持是基于COM和ActiveX,对于组件技术不断完善发展的今天,它也显出了它的落后性;同时VB在进行系统底层开发的时候也是相对复杂的,调用API函数需声明,调用不方便,不能进行DDK编程,不可能深入Ring0编程,不能嵌套汇编;而且面向对象的特性差;网络功能和数据库功能也没有非常突出的表现,综上所述,VB作为一种可视化的开发工具由于其本身的局限性,导致了它在未来软件开发中逐步被其他工具所代替。
3.5.2Java的特点
(1)安全性Java是一种安全的网络编程语言,不支持指针类型,一切对内存的访问都必须通过对象的实例来实现。
这样能够防止他人使用欺骗手段访问对象的私有成员,也能够避免在指针操作中易产生的错误。
此外,Java的安全性体现在多个层次上:
在编译层,有语法检查;在解释层,有字节码校验器,可进行代码段格式测试和规则检查、访问权限和类型转换合法性检查、操作数堆栈的上溢和下溢检测、代码参数类型合法性检查等;在平台层上,通过配置策略,可设定访问资源域,无须区分本地或远程。
(2)可移植性Java具备有很好的移植性,这主要得益于它与平台无关的特性。
同时,Java的类库中也实现了与平台无关的接口,这使得这些类库也能移植。
同时,Java编译器主要是由Java本身来实现的,Java的运行系统(解释器)由标准C语言实现,因而整个Java系统都具有可移植性。
(3)多线程机制Java具有多线程机制,这使得应用程序能够并行地执行。
它的同步机制也保证了对共享数据的共享操作,而且线程具有优先级的机制,有助于分别使用不同线程完成特定行为,也提高了交互的实时响应能力。
Java的多线程技术使网上实时交互实现很容易,从而为解决网上大数量的客户访问提供了技术基础。
(4)跨平台通常,在Windows下编写的程序是不能直接拿到UNIX上运行的,因为程序的执行最终必须转换成为计算机硬件的机器指令来执行,专门为某种计算机硬件和操作系统编写的程序是不能够直接放到其他类型的计算机硬件上执行的,至少要做移植工作。
要想让程序能够在不同的计算机上运行,就要求程序设计语言能够跨越各种软件和硬件平台,而Java恰恰满足了这一需求。
Java编译器能够产生一种与计算机体系结构无关的字节指令,只要安装了Java虚拟机,Java就可以在相应的处理机上执行。
3.5.3Qt的特点
Qt拥有一个单一的Library,让你开发各种不同平台的程序,目前支持Windows、Linux、Mac、UNIX、EmbeddedLinux,讲白话点,就是它提供了一个Library让你开发GUI程序,写好之后,只要在各平台重新Compile后,就可以在各平台执行,而且使用完整的ANSIC++语言,且不限Compiler,只要是C++的Compiler都可以,重要的是,该Library相当漂亮,写出来的程序很像C++Builder或.NETFramework的那样精简,不会向MFC那样复杂。
目前Qt已经到第四个版本,GUI部分算支持的相当完整,且支持数据库、XML、Multi-Thread、Socket等方面的programming。
若以后台角度来说,无论后端是什么数据库,只要透过相同的Interface,不同数据库的Class来实做这个Interface,前端GUI的程序写法完全不用改变,同理,面对不同的OS,理论上只要透过相同的Interface,不同OS的Class各自实做这个Interface,前端GUI的程序也完全不用改变,最后只要靠Compiler将程序compile成各平台的原生程序即可,这样即可保证其执行速度,不用再靠VirtualMachine。
但很可惜这个理想,这么多年来都没人可以做出来。
Qt无疑是GUI终极解决方案,有强力的ANSIC/C++语言背书,又有单一的GUILibrary,且精简漂亮,又能Compile成各平台的原生执行档,几乎是最完美的解决方案了。
3.5.4方案的选择
经过以上比较好,考虑到Qt的众多良好特性,尤其是其跨平台性,决定使用Qt开发俄罗斯方块游戏。
3.6Qt简介
Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。
它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。
Qt是面向对象的框架,使用特殊的代码生成扩展(称
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 劳拉 方块 游戏 设计 实现