java俄罗斯方块游戏毕业论文
更新时间:2023-12-17 06:17:01 阅读量: 教育文库 文档下载
(此文档为word格式,下载后您可任意编辑修改!)
毕业论文java俄罗斯方块游戏
摘 要
在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为老少皆宜的娱乐方式。但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的设计、艺术、声音和软件,所以并不是人人皆知。直到今天,在中国从事游戏设计的人仍然很少,但是游戏行业的发展之快,远超如家电、汽车等传统行业,也正因为如此,游戏人才的教育、培养远落后于产业的发展。
俄罗斯方块是个老幼皆宜的小游戏,它实现由四块正方形的色块组成,然后存储在一个数组的四个元素中,计算机随机产生不同七种类型的方块,根据计算机时钟控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作,(控制键的实现是由键盘的方向键的事件处理实现)。然后程序根据这七种方块堆叠成各种不同的模型。
论文描述了游戏的历史,开发此游戏的环境,游戏开发的意义。遵循软件工程的知识,从软件问题定义开始,接着进行可行性研究、需求分析、概要设计、详细设计,最后对软件进行了测试,整个开发过程贯穿软件工程的知识体系。
此次设计在Microsoft Windows XP系统下,以Java为开发语言,在eclipse开发平台上进行游戏的设计与实践。
关键词:游戏设计;算法;数组;事件
引 言
游戏是人们活动中一项非常重要的内容,有人认为如果哪一天人类对所有的游戏都失去兴趣,恐怕世界的末日就要到了。电脑对游戏的贡献有目共睹,现在摸过电脑的人很少有没玩过电脑游戏的,喜欢游戏的人也很少有不玩电脑的。
俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。究其历史,俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解、喜欢上它的。现在联众又将重新掀起
1 这股让人沉迷的俄罗斯方块风潮。对一般用户来说,它的规则简单,容易上手,且游戏过程变化无穷,而在\联众俄罗斯方块\中,更有一些联众网络游戏所独有的魅力――有单机作战与两人在线对战两种模式,用户可任选一种进行游戏。网络模式还增加了积分制,使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。
俄罗斯方块游戏可以说是随计算机的发展而发展,并不断推陈出新演变出各种类似游戏, 深受广大玩家喜爱。这个游戏有的简单, 有的复杂, 但其根本原理是一样的都是对运动的方块进行组合, 来训练玩家的反应能力。谈到游戏软件, 大多数人都认为其神妙莫测, 高不可及。而一般游戏软件也确实具有很高的技术难度, 随着开发工具及软件开发方法学的不断发展, 动手开发游戏也不是十分困难的。俄罗斯方块游戏是一种古老而又有趣的游戏, 游戏软件不计其数, 网上就有好多关于实现的复杂算法和设计, 其难度让一般初学者望而却步。本文利用数组作为方块的数据结构,提出一种用JAVA语言实现的简易方法, 对初学者可仿此开发类似游戏, 并了解游戏软件的设计与开发过程。
1.绪论
1.1 电子游戏及其分类
电子游戏,也就是运行在家用电脑、家用电子游戏机或是掌中宝游戏机及街机上的电子游戏程序。电子游戏是一种结合剧情故事、美术、音乐、动画、程序等技术于一身的互动型娱乐软件,涉及到多个行业。
从电子游戏的分类来看,有着多种分类方式。传统的游戏分类是按照游戏类型,将其分为即时战略游戏、第一人称射击游戏、角色扮演游戏、策略型游戏等类别。根据游戏运行平台的不同,可将电子游戏分为游戏机游戏、单机版PC 游戏、互动电视游戏、在线游戏和手机游戏。此外,韩国政府将电子游戏业分为家用游戏机游戏、单机版PC 游戏、网络游戏和街机游戏四大类。考虑到中韩游戏业比较接近,论文采用韩国的分类标准。“网络游戏”也就是人们一般所指的“在线游戏”,是指通过互联网进行的电脑游戏,通过人与人之间的互动达到交流、娱乐和休闲的目的。在互联网(局域网)技术出现之前,电子游戏都可以归于单机版游戏,即“人机对战”游戏,或最多是双人对战游戏。而随着互联网技术的出现,通过连接游戏服务器,上百、上千、乃至上万的游戏玩家同时连线娱乐成为了现实,这就大大增加了游戏的互动性、真实性,丰富了电子游戏的内涵。从网络游戏的分类来看,目前业界还没有一个比较统一规范的分类。随着计算机设备和网络技术的发展,电子游戏在全球得到了迅猛的发展,取得了巨大的成功,已成为当今世界上不可缺少的精神粮食。
2 1.2 电子游戏发展现状
1.2.1 电子游戏在国外的发展现状
电子游戏是最初产生于美国,1971年,一个还在MIT就读的学生设计了世界上第一个业务用游戏机,这个街机游戏的名字叫《电脑空间》。可以说时至今日,电子游戏仍然是外国的天下。
美国至今仍是世界第一大游戏市场,它遵循的是以发行商为主的产业开发链模式,根据美国市场调查公司NPD Group调查统计,美国2004年游戏总销售金额(包括家用、掌上型主机及软件)为99亿美元,占了全球游戏市场的45%。其中游戏软件销售的具体数字是:视频游戏软件的销售额达52亿美元(1.6亿套),PC游戏软件销售额达11亿美元(4500万套),掌机游戏销售额达10亿美元(4230万套)。2004年一共大约有2.48亿套游戏售出。据估计,美国每个家庭平均购买过2部游戏[3]。
日本近20年来疯狂赚电子游戏的钱。从上世纪60年代初的街机,到六七十年代之间的家用游戏机,再到八九十年代的掌上游戏机,日本经过30多年的耕耘,终于把电子游戏这棵“摇钱树”,培育成第一时尚娱乐产业,垄断全球业界长达10余年。对于日本来说,电玩业已是国家经济的重要支柱之一,在GDP中占有15的举足轻重地位。日本游戏业在最辉煌的1998年,曾经占领全球电子游戏市场硬件90%以上,软件50%以上。
韩国号称世界上网络游戏产业最发达国家之一。迄今为止,国内网络游戏市场有超过60%的产品来自韩国游戏软件开发商,韩国网络游戏使国内很多游戏运营公司在游戏营销市场或股票资本市场上获得了巨大的成功。 韩国游戏市场的发展不是偶然,韩国政府不仅给游戏产业以正确的定位和引导,更是将其和本国经济发展紧密地联系到一起,做了很多市场培育方面的工作。韩国政府认识到,靠重型工业来支撑全国经济的做法是片面的,于是将IT、娱乐产业视为新的经济增长点,开始大力扶持。从那时起,科技含量极高而能源消耗极低的游戏制作及相关产业担负起了“富国兴邦”的重担。由文化观光部出面组建韩国游戏支援中心,向韩国游戏产业提供从资金到技术上的多方面支援;成立游戏投资联盟,政府每年向游戏产业投入的资金多达500亿韩元,并为游戏企业提供长期的低息贷款;设立信息化基金和文化产业基金,为游戏产业服务;对指定的风险企业实行各种税制优惠政策,减少甚至免除游戏企业的税务负担;建设游戏产业基地以扶持中小游戏企业的发展;对从事游戏产业的高科技人才免除两年的兵役。 在韩国,从制作到运营,一个网络游戏公司起步门槛较低,主要得益于政府实行的援助计划。此外,在有利的政策形势下,韩国出现了众多的游戏院校,一些原本不涉足此领域
3 的大学也开设了游戏相关专业课程,以大力培养游戏专业人才,从而为游戏生产提供了基础保障。
1.2.2 电子游戏在国内的发展现状
与电子游戏发达的国家相比,我国在电子游戏方面还存在比较大的差距。目前,我国游戏市场正处于发展阶段,但市场上的游戏软件主要来自日本、美国、韩国等地,但由本土游戏制作人开发创作的游戏正在高速增加,国产原创的游戏即将成为游戏的主流。
中国的游戏产业经过80年代初期台湾厂商的探索至90年代,开始了自己的研发、发行的历程,直至网络游戏的风行,让中国的网络游戏开始有了飞速的发展。 1983年,智冠科技有限公司在中国台湾成立,为全球第一家签订授权重制中文版产品代理销售合约的公司,2000年智冠在台湾股票上市, 2002年其控股的中华网龙在台湾上市。
1996年底,UBI SOFT上海分公司暨上海育碧电脑软件有限公司成立。同年,全球游戏软件领军企业EA在中国上海成立办事处。1997年,由尚洋公司制作的《血狮》正式上市。 1997年,北京新天地互动多媒体技术有限公司成立,该公司引进了《古墓丽影III》(TombRaider III)、《盟军敢死队》等著名欧美游戏,并在1999年在中国率先掀起“游戏软件价格革命”,全面推行50元的价格体系,从此正版游戏价格开始贴近大众消费者。 1999年,业内估算中国电脑游戏市场(正版)约1.5亿元人民币。 2000年,大陆华彩软件代理发行第一款中文MMORPG《万王之王》正式推出,该游戏于1999年在台湾发行,由台湾雷爵资讯(Lager)开发。也在2000年,继《万王之王》、《石器时代》、《网络三国》在台湾上市之后,游戏桔子推出了《天堂》,游戏桔子成立于1995年,1999年以《便利店》在台湾奠定了地位。《天堂》这款由韩国著名游戏公司Ncsoft研发的网络游戏不但在本国大获成功,也在台湾再次夺冠。 2001年初,北京华义在中国大陆地区正式推出了《石器时代》,华义国际股份有限公司于1993年在台北成立,2001年在台湾股票上市。《石器时代》成为大陆当时最流行的网络游戏。2001年,天人互动软件技术有限公司在北京成立。当年与SEGA结成PC游戏业务的战略合作关系,发行了《樱花大战Ⅱ》《文明Ⅲ》《无冬之夜》等经典游戏,2002年,引进在欧美网络游戏《魔剑》(Shadow Bane),这是首款在中国测试的欧美网络游戏。 2001年5月,“联众世界”经过3年多的迅速成长,以同时在线17万人、注册用户约1800万的规模,成为当时世界用户数量第一的在线游戏网站。
2005年1月21日,中央电视台报道:我国网络游戏产业当年增加了50%,今后几年都将以50%以上的速度增长;第一届中国网络游戏年会报道:中国国内网络游戏2004年规模达24.7亿元,2009年规模将达到109.6亿元。
4
2.可行性研究
2.1 设计目的
通过本游戏的设计,综合自己在校期间所学的理论知识,设计开发俄罗斯方块游戏,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,初步掌握MVC这种设计模式,进一步巩固和加强自身对j2se基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。
2.2 软件问题定义
基本要求:本游戏开发的总体任务是实现游戏的可操作性,以及界面的美观性。整个开发过程遵循软件工程规范,采用JAVA GUI编程来实现界面以及事件的控制,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作,通过菜单栏中的相应菜单选项实现游戏的开始、结束、变换方块、积分以及等级的功能。
目标:通过本游戏的开发,主要实现游戏的可操作性以及美观性,同时使自己对JAVA语言的了解更进一层,为将来的实际工作打下坚实的基础。
条件、假定和限制:由于知识以及能力的限制,本游戏所实现的功能不够强大,可对本游戏进行改善,从而增强游戏的功能。
可行性研究的方法:通过研究分析俄罗斯方块所具备的能力及实现的方法、确定主体结构。利用现阶段我所能达到的能力,以最简洁、最容易的办法,边开发边测试边修改,实现一个初级游戏软件。
评价尺度:由于本软件是一个初级产品,对其要求不是太苛刻,所以能够达到俄罗斯游戏的一般功能即可。
2.3 可行性分析
技术可行性:开发本游戏的编程语言有多种,考虑到自身对语言的掌握程度,选择JAVA语言进行游戏的开发,采用JAVA GUI编程来实现界面以及事件的控制。
经济可行性:本游戏的开发旨在完成毕业设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行相应JAVA程序的电脑便可,所以不用考虑到经济问题。
社会可行性:本游戏的开发主要为了完成毕业设计,开发的主体是个人,不存在法律上的侵权行为,也不会为社会造成影响,这方面是完全可行的。
5
3.需求分析
3.1 引言
对软件需求分析就是通过调查研究,建立系统的数据模型、功能模型、行为模型,用户和开发人员在“系统必须做什么”这个问题上实现相互理解,达到共识,从而形成双方认可的软件产品的需求规格说明书。这样有益于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,便于采用工程方法开发软件,提高软件的质量,便于开发人员、维护人员、管理人员之间的交流、协作,并作为工作成果的原始依据,并且在向潜在用户传递软件功能、性能需求,使其能够判断该软件是否与自己的需求相关。
3.2 游戏需求
28种状态的方块随机产生,自由下落,落下时可由玩家用上、下、左、右控制键控制翻转和移动,以便以玩家所需要的形态和位置落下。如果落下时,方块的方格能填满某一行,则这一行可消去。消去一行后,游戏可给玩家加分,若由存在空格的方块填满整个窗口,则游戏失败。游戏功能需求如下:
游戏界面需求:设计良好的游戏界面可以让玩家充分感受到游戏带来的娱乐性,游戏的背景色是黑色,方块用蓝色颜色,在一定的区域内运动和变形,落下后的障碍物用黄色显示,这样看起来会有一定的美感。
游戏形状需求:用数组作为存储方块28种状态的数据结构,即长条形、Z字形、反Z形、田字形、7字形、反7形、T字型,各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。
键盘处理事件需求:方块下落时,可通过键盘方向键(上、下、左、右键)对该方块进行向上(变形),向下(加速)、向左、向右移动。
鼠标处理事件需求:通过点击菜单栏中相应的菜单项,可以实现游戏的开始、结束,方块形状的变换,分数、等级的显示,以及游戏帮助等功能。
显示需求:当不同的方块填满一行时可以消行,剩余方块向下移动并统计分数。当达到一定分数的时候,会增加相应的等级。
3.3 软硬件需求
操作系统:Microsoft Windows XP Professional Service Pack 2 内存:512M 硬盘:80G CPU:赛扬2.8
6 交互工具:键盘鼠标 显示器:VGA显示器 JDK版本:jdk1.6.0.02
Eclipse版本:eclipse-SDK-3.4-win32
3.4 接口控制
本游戏通过键盘进行操作,在Windows的操作系统下,利用键盘的上、下、左、右键对方块进行移动变形,要使用键盘的接口事件。
3.5 方案论证
学校现已开设的课程有C语言、C++,java,自己本身自学了Java,通过网上以及图书馆的资料,知道可以通过C,C++,VB,Delphi,Java实现俄罗斯方块游戏的设计。下面简单介绍下VB、C++、Java各自的优点: 3.5.1 VB的优点
全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具。在中国乃至全世界都能看到它的身影,它曾是在中国最为流行的编程工具,到现在还占 据着非常重要的地位,对于它的好坏大家都有一定的了解,VB作为一种较早出现的开发程序以其容易学习,开发效率较高,具有完善的帮助系统等优点曾影响了好 几代编程人员,但是由于VB不具备跨平台这个特性,从而也决定了VB在未来的软件开发中将会逐渐地退出其历史舞台;它对组件技术的支持是基于COM和 ActiveX,对于组件技术不断完善发展的今天,它也显出了它的落后性;同时VB在进行系统底层开发的时候也是相对复杂的,调用API函数需声明,调用 不方便,不能进行DDK编程,不可能深入Ring0编程,不能嵌套汇编;而且面向对象的特性差;网络功能和数据库功能也没有非常突出的表现,综上所 述,VB作为一种可视化的开发工具由于其本身的局限性,导致了它在未来软件开发中逐步被其他工具所代替。 3.5.2 C++的优点
C++是对C语言的扩充,扩充的绝大部分来自著名语言中的最佳特性:从SIMULA 67中吸取了类,从ALGOL 68中吸取了运算符一名多用、引用和在分程序中任何地方说明变量,综合了Ada的类属和Clu的模块特点,从BCPL中吸取异常处理,从BCPL中吸取了用表示注释。
C++保持了C的紧凑、灵活、高效和易移植强的优点,它对数据抽象的支持主要在于类概念和机制,对面向对象风范的支持主要通过虚拟函数。C++既有数据抽象和面向对象能力,语言运行性能高多,加上C语言的普及,而从C至C++的过渡较为平滑,以及C++与C的兼容程度可使数据巨大的C程序能方便地在C++环境中重用。
7 尽管C++当初的设计本意是帮助管理大型程序,但其用途并不仅限于此。C++的面向对象的特性可有效地用于实际的程序设计工作。C++常常用于设计编辑器、数据库、个人文件系统以及通讯程序等。而且,由于C++共享C的效率,所以用C++可以构成很多高性能的系统软件。 3.5.3 Java的优点
(1) 安全性
Java是一种安全的网络编程语言,不支持指针类型,一切对内存的访问都必须通过对象的实例来实现。这样能够防止他人使用欺骗手段访问对象的私有成员,也能够避免在指针操作中易产生的错误。
此外,Java的安全性体现在多个层次上:在编译层,有语法检查;在解释层,有字节码校验器,可进行代码段格式测试和规则检查、访问权限和类型转换合法性检查、操作数堆栈的上溢和下溢检测、代码参数类型合法性检查等;在平台层上,通过配置策略,可设定访问资源域,无须区分本地或远程。
(2) 可移植性
Java具备有很好的移植性,这主要得益于它与平台无关的特性。同时,Java的类库中也实现了与平台无关的接口,这使得这些类库也能移植。同时,Java编译器主要是由Java本身来实现的,Java的运行系统(解释器)由标准C语言实现,因而整个Java系统都具有可移植性。
(3) 多线程机制
Java具有多线程机制,这使得应用程序能够并行地执行。它的同步机制也保证了对共享数据的共享操作,而且线程具有优先级的机制,有助于分别使用不同线程完成特定行为,也提高了交互的实时响应能力。Java的多线程技术使网上实时交互实现很容易,从而为解决网上大数量的客户访问提供了技术基础。
(4) 跨平台
通常,在Windows下编写的程序是不能直接拿到UNIX上运行的,因为程序的执行最终必须转换成为计算机硬件的机器指令来执行,专门为某种计算机硬件和操作系统编写的程序是不能够直接放到其他类型的计算机硬件上执行的,至少要做移植工作。要想让程序能够在不同的计算机上运行,就要求程序设计语言能够跨越各种软件和硬件平台,而Java恰恰满足了这一需求。Java编译器能够产生一种与计算机体系结构无关的字节指令,只要安装了Java虚拟机,Java就可以在相应的处理机上执行。 3.5.4 方案的选择
面向对象的程序设计吸取了结构化程序设计的先进思想,并把它们同几个支持用户用新方法进行程序设计的有力概念结合在一起。
8 所有面向对象的程序设计语言一般都包含三个概念:封装、多态性和继承性。 这种方法要求语言必须具备抽象、封装、继承和多态性这几个关键要素。 面向对象的程序设计,是通过数据和代码建立分块的内存区域,以便提供对程序进行模块化的一种程序设计方法,这些模块可以被用作样板,在需要时再建立其副本。 C++和Java在面向对象这方面比VB要强,所以我排除了用VB做的可能性。但是C++为了与C语言兼容,其是包含了些面向过程的成分;Java除了C++中非面向过程的部分,其程序编写过程就是设计、实现类,定义其属性、行为的过程。还有Java特有的“沙箱”机制是其安全性的保障,同时它去除了C++中易造成的错误指针,增加了自动内存管理等措施,保证了Java程序运行的可靠性。
所以经过再三比较了三种语言后,决定采用Java语言编写俄罗斯方块。
4. 概要设计
4.1 游戏设计方案的确定
本游戏的设计采用MVC模式(Model -View -Controller),即把本游戏的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样本游戏的设计被分成三个层—模型层、视图层、控制层。MVC模型图如下所示:
4.2 系统流程结构设计 4.3 各个功能模块图设计
4.3.1 模型层(Model)功能模块图设计 4.3.2 视图层(View)功能模块图设计 4.3.3 控制层(Controller)功能模块图设计
9
5. 详细设计
5.1模型层(Model)设计
5.1.1 图形的产生
通过图形工厂类ShapeFactory的getShape(ShapeListener listener)方法随机产生方块的某种状态,这里运用了工厂设计模式,这种设计模式是为了实现高内聚低耦合而存在的,这种设计模式的通俗解释就是:你想要一个产品,你需要让工厂给你生产一个,你要告诉工厂你要生产什么产品,就把你需要生产的这个产品当做参数传给工厂类的生产产品的方法,然后根据你传进来的产品,而决定工厂人生产什么产品,产生出来产品后,最后要返回您要的这个东西。 5.1.2 图形的数据结构
定义一个4x4方阵,共16个小格。用“0”和“1”来表示每个方格是绘制还是空白,由此可以组合出多种图形,如图所示:
其中图一表示为{0,0,0,0, 1,1,1,1 , 0,0,0,0, 0,0,0,0} 其中图二表示为{0,0,0,0, 0,1,1,0 , 0,1,1,0, 0,0,0,0} 其中图三表示为{0,0,0,0, 0,1,0,0 , 0,1,1,1, 0,0,0,0} 其中图四表示为{0,0,0,0, 0,1,0,1 , 0,1,1,0, 0,0,1,0}
方块的旋转是通过绘制4个方向的方块,在不同旋转角度显示不同方向的方块来完成的。所以程序要控制方块的旋转方向,只要控制显示哪副图就可以了。
本游戏是用一个三维数组int[][][] shapes = new int[][][];作为存储方块的数据结构来保存方块的28种状态的。 5.1.3 图形的移动
10
图形类Shape保存了自己的位置信息,用left表示图形到左边界的距离,top表示图形到上边界的距离,图形移动就是改变left和top的值。向上移动:top减1,向下移动:top加1,向左移动:left减1,向右移动:left加1。
图形的移动分为图形的自动下落以及通过按键事件实现图形的左移、右移以及加速下移。通过多线程ShapeDriver类来实现图形的自动下移,由于游戏中方块的动态性,每个方块有一定的生命周期,所以选用线程来实现方块。一个方块用一个线程类对象实现,该类继承与Thread类,当一个方块出现时也就表示一个线程对象产生并开始运行。通过对按键事件的响应,实现图形的左移、右移以及加速下移。 5.1.4 图形的变形 通
过
int
type
=
new
Random().nextInt(shapes.length);
shape.setBody(shapes[type]);
shape.setStatus(0);实现初始图形的初始化,通过status = (status + 1) % body.length;实现图形的变形功能。 5.1.5 存储和表示障碍物
用一个和显示区域的面板大小相对应的二维数组保存障碍物的位置信息,如果对应的位置是障碍物,则这个数组中相应的元素就为1,否则就为0。如何把图形变成障碍物呢?只要把属于图形的格子对应的位置都变成障碍物即可。代码如下:
public boolean isMember(int x, int y, boolean rotate) { int tempStatus = status; if(rotate) { tempStatus = (status + 1) % body.length; } return body[tempStatus][y*4 + x] == 1; }
public void accept(Shape shape) { System.out.println(\ for(int x=0; x<4; x++) { for(int y=0; y<4; y++) { if(shape.isMember(x, y, false)) { if((shape.getLeft() + x) 11 } 5.1.6 判断满行及消行 如果某一行没有空白,则这一行就是满行。满的那行上面所有的行整体下移一行就是消除这个满行。代码如下: private void deleteFullLine() { for(int y=Global.HEIGHT-1; y>=0; y--) { boolean full = true; for(int x=0; x if(full) { deleteLine(y); } } } private void deleteLine(int lineNum) { for(int y=lineNum; y>0; y--) { for(int x=0; x for(int x=0; x deleteFullLine(); } 利用循环语句从屏幕最底行依次向上对有方块的每一行进行判断,判断某一行中是否有空白,如果没有空白的话,则将当前的行号传递给deleteLine(int lineNum)方法,由该方法实现消除当前行,并将上面的方块依次下移一行,最后再重新调用deleteFullLine()方法进行查找,直到所有行都检查一遍结束。 5.2视图层(View)设计 5.2.1 方块的显示 12 通过视图层的GamePanel类的paint(Graphics g)方法调用Shape类的drawMe(Graphics g)方法,从而实现方块的绘制,代码如下: public void drawMe(Graphics g) { g.setColor(Color.BLUE); for(int x=0; x<4; x++) { for(int y=0; y<4; y++) if(getFlagByPoint(x, y)) { g.setColor(new Shape().shapeColor); g.fill3DRect((left + x)*Global.CELL_SIZE, (top + y)*Global.CELL_SIZE, Global.CELL_SIZE, Global.CELL_SIZE, true); } } } 5.2.2 障碍物的显示 通过视图层的GamePanel类的paint(Graphics g)方法调用drawMe(Graphics g) 方法,从而实现障碍物的绘制,代码如下: public void drawMe(Graphics g) { for(int x=0; x 5.3 控制层(Controller)设计 13 Ground的控制层主要是实现图形工厂生产图形,图形按键事件的处理,方块、障碍物显示的控制,图形自动下落和障碍物生成的控制。通过控制层这个大管家最终实现此俄罗斯方块的按键事件的处理以及各种逻辑的处理。 5.4 游戏演示 5.4.1 游戏界面显示 5.4.2 开始和结束控制菜单 14 5.4.3 分数和等级查看菜单 5.4.4 变换方块菜单 5.4.5 帮助菜单 15 5.系统测试 5.1 游戏界面菜单选项的功能测试 (1) “控制”菜单测试 ①点击“游戏”?“开始” 输出:游戏开始 结果:正常 ②点击“游戏”?“结束” 输出:弹出游戏结束提示框 结果:正常 (2) “查看”菜单测试 ①点击“查看”?“分数” 输出:在游戏面板中间跳出分数显示框 结果:正常 ②点击“查看”?“级别” 输出:在游戏面板中间跳出级别显示框 结果:正常 16 (3) “变换”菜单测试 ①点击“变换”?“改变方块” 输出:在游戏面板中显示随机产生的某种方块 结果:正常 5.2 按键事件的功能测试 (1) 方块移动测试 游戏过程中,点击“左、右、下”方向键 输出:方块正常移动,不会移出边界 结果:正常 (2) 方块反转测试 游戏过程中,点击向上方向键 输出:方块无边界和障碍物阻挡的情况下可反转 结果:正常 5.3方块堆砌与消行测试 (1) 当方块下落到最底面或与障碍物接触时 输出:方块成功堆砌在底部 结果:正常 (2) 当出现满行现象时 输出:所有满行被消除,方块依次下移 结果:正常 5.4 测试结果分析 经过测试,本游戏实现了基本的功能,不过整体功能还不是很强大,作为开发的第一个版本,游戏在很多方面还需要进一步完善。 17 结 论 游戏设计与实践是一项复杂而且庞大的工作,在选题之后,我才意识到过程的艰难,因为以前从来没有接触过游戏设计,刚开始时有点迷茫和彷徨。后来通过看书和在网上查找资料,逐渐找到了一些感觉,也依照资料自己动手编写了几个简单经典的游戏。本文仅以俄罗斯方块为例予以说明。 本次设计让我初步懂得了电子游戏所涉及到的有关技术、方法,包括电子游戏分类、选题、构思等。并实现几个可演示的游戏软件,其中有很多应用了学习的相关技术,并且做到了图、文、声并茂,能实际演示。此次设计过程中印象最深的收获有:1、学到了很多新知识,并且对老知识进行了回顾。经过长时间的学习,更进一步熟悉了Java语言。2、通过不断上机实验,调试程序,总结经验,从对课题的不理解到能够开始动手去做,提出问题并自己想办法解决问题,自己多实践,所以增强了动手能力。3、提高了中、英文资料的检索能力。这次毕业设计过程中我查阅了很多资料,不但有图书馆的期刊、杂志、馆藏图书,还有网络中的电子文档、电子书籍、网页及下载的视频教学课程;不但有中文资料还有英文资料。这些资料,使我的眼界更开阔,对课题的认识更加深刻,编写程序的时候思路更加清楚,少走了很多弯路。 但如果真的要从事游戏设计的工作,需要走的路还很长,即便是对于国际知名的大公司,也是在不断的探索和实践中前进。但这并不表明前途就是渺茫的,通过这次实践,进行了一次从底而上和自上而下的归纳和演绎的过程,在变化多端的游戏面前,总算领悟了一点它的奥妙。内容繁复、采用的表现手段多姿多彩的游戏世界,即便是再复杂,也可以通过一定程度的归纳演绎得出适应其规则和表现的契合点。 回顾这个设计过程,我学到了许多书本上没有学到的知识。通过这次自己制作的软件,丰富了自己的实践技能,扩展了本专业的知识面,使我受益非浅,同时也体验到了搞软件开发的困难度。在这次设计的同时,我又从中学到了许多东西。但由于我对这样的软件开发还只是一个开始,了解的不多,这其中或许还有很多的不足,有些模块做得不是很好,有些功能还不能够完全的实现,如不能把要装载的方块提前显示出来。因此做得不是很好,界面的设计及整体的布局还比较简单,没有突出特色出来,这也可能是我这个系统的不足之处。 致 谢 经过一个多月的不断努力,毕业设计内容已经基本上完成了。 首先,在这里我要由衷地感谢我的指导老师梁光春教授。他在毕业设计期间对本人给予了悉心指导和大力帮助。在毕业设计期间,在我的课题设计和论文撰写过程中对我 18 进行了认真检查,严格督促和仔细批阅,并对我的课题提出了许多富有启发性和建设性的意见和建议。 同时我也要非常感谢班上的同学,一直以来都是他们在身边督促我,我们互相鼓励共同进步。 另外,我还要感谢我的室友和身边的好友,他们一直都在身边支持我,在程序设计和论文撰写的艰难过程中,他们带给我欢乐,带给我信心,并給予了我很大的鼓励与帮助。 最后,在这里还要对我的家人和远方的朋友表示深深的感谢,他们在精神和物质上都给了我莫大的支持,没有他们的关怀和爱护,我想我就无法顺利地完成这次毕业设计。 参 考 文 献 [1] 罗伟坚著.Visual C++经典游戏程序设计[M].北京:人民邮电出版社,2006.2 [2] 朱福喜著. Java程序设计技巧与开发实例[M].北京:人民邮电出版社,2004.2 [3] 赵东跃著.俄罗斯方块编程[M].电脑编程技巧与维护,1998年第六期 [4] 陆惠恩著. 实用软件工程[M].北京:清华大学出版社,2006.5 [5] 黄复贤著.俄罗斯方块游戏的敏捷设计与开发[M]. 电脑编程技巧与维护,2005.4 [6] (美)Bruce Eckel著,陈昊天 译.Java编程思想[M].北京:机械工业出版社,2007.6 [7] 高凌琴,陈青华 著. 俄罗斯方块游戏关键技术探讨[M].信息技术与信息化研究探讨,2008年第 二期. [8] 王宇,战学刚,高国伟著. 计算机算法解决俄罗斯方块中的数学与计算问题[M].计算机应用与 软件,第二十四卷第三期,2007.3 . [9]朱福喜,黄昊著. Java项目开发与毕业设计指导[M].北京:清华大学出版社,2008.6 [10] 郑人杰,殷人昆,陶永雷著.实用软件工程[M].北京:清华大学出版社,2004.11 以下免费送您一百个优秀毕业论文题目,供参考。 1.企业集团激励与绩效评价问题研究 2.XXX地区中小企业财务管理现状问题研究 3.XXX地区上市公司盈利质量实证研究 4.XXX地区企业集团整合过程中的财务问题研究 19 5.XXX地区中小企业的信用担保体系问题研究 6.XXX地区上市公司财务预警问题研究 7.企业并购前后财务状况变化问题研究 8.以平衡计分卡为核心的绩效评价体系研究 9.EVA在企业绩效评价中的作用研究 10.关于我区中小企业引入风险投资问题研究 11.我国上市公司经营目标的实证分析 12.对内含报酬率法的再思考 13.利用平衡计分卡落实战略的案例分析 14.基于EVA的企业业绩评价指标体系的构建与实施研究 15.基于不同发展周期的企业财务战略选择研究 16.集团公司全面预算目标的制定与分解 17.现金流量折现法在评估公司战略中的应用分析 18.财务指标与非财务指标在评估管理者业绩中的应用拟合 19.我国企业财务管理目标的现实选择 20.财务管理目标与企业财务核心能力问题研究 21.企业财务管理中运用税收筹划的探讨 22.建立以财务管理为核心的资源配置制度 23.财务预警系统在财务管理中应用评价 24.基于Excel的财务预警模型研究 25.中西部地区中小企业财务战略选择问题研究 26.中小企业纳税筹划问题研究 20
正在阅读:
java俄罗斯方块游戏毕业论文12-17
《高中政治自主合作学习方法的研究》问卷分析 - 图文10-31
2017广东省考申论热点:信仰缺失衍生官员“风水情结”11-29
最新教学参考资料:浅谈思想政治课的板书设计 - 图文11-29
江苏省宿迁市沭阳县2020年初中学业水平模拟考试历史卷(扫描版)06-03
GNSS测量与数据处理试题01-18
《输油管道设计与管理》课程综合复习资料01-21
课程设计-- 电气化铁道供电系统与设计01-18
工程固定总价合同结算方式及纠纷处理04-13
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 俄罗斯
- 方块
- 毕业论文
- 游戏
- java
- 微机原理与接口试题(出题老师所给)
- 某某公司2011年“一通三防”工作安排
- 广东省中小学校音乐、美术教学器材配备目录(初稿)
- FASCIENZ时尚饰品连锁店招商加盟计划书
- 初中语文教学中对先学后教模式的实际应用
- 小学三年级语文期中自我评价试卷
- NBA在中国市场的营销策略对CBA营销策略的启示
- 《爸爸的花儿落了》课后练习题
- 10-14厦门物理中考(试题 及答案解析) - 图文
- 监理员的岗位职责
- 八年级上册考纲单词表
- 35KV降压站改造方案 - 图文
- 雅思预测
- 员工向单位提出辞职,能否获得经济补偿金
- 最新审计年度工作总结
- 液体混合监控系统设计
- 怎样架构企业研发管理体系来源共11页文档
- 水利部办公厅关于开展2016年度省级水行政主管部门安全生产监管工
- 廊坊银行确认个人信用报告查询次数多影响贷款
- 可爱的小白兔作文 - 0