基于java的俄罗斯方块的设计和实现-毕业论文_第1页
基于java的俄罗斯方块的设计和实现-毕业论文_第2页
基于java的俄罗斯方块的设计和实现-毕业论文_第3页
基于java的俄罗斯方块的设计和实现-毕业论文_第4页
基于java的俄罗斯方块的设计和实现-毕业论文_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本科生毕业论文设计基于JAVA的俄罗斯方块的设计与实现姓名学号专业指导教师2013年5月30日摘要俄罗斯方块作为一款风靡全球的多样化终端游戏,经久不衰。俄罗斯方块简单的基本游戏规则是旋转、移动,游戏自动随机输出7种形状的方块,经旋转后可形成28种形状,方块堆叠在一起,排列成完整的一行或多行消除得分,积分达到一定程度会自动提升级别。该游戏上手简单、老少皆宜、家喻户晓。本论文在详尽分析传统俄罗斯实现的基本原理、基本规则基础上,更深一步地研究俄罗斯方块的创新模式,在经典模式基础上开发出等级可变的模式,以及进一步开发出颜色可变的模式,如随意改变界面的背景色、前景色等,本文对以上功能给出了实现流程、详尽描述、和部分源代码。论文阐述了该游戏的历史、开发此游戏的意义和环境并根据软件工程的相关知识,进行系统的需求分析、概要设计、详细设计与实现、调试运行进行描述。此设计是在MICROSOFTWINDOWSXP系统下,以JAVA为开发语言,在MYECLIPSE开发平台上进行游戏的设计与实现。关键词游戏;俄罗斯方块;ERRORREFERENCESOURCENOTFOUND软件工程;MYECLIPSEERRORREFERENCESOURCENOTFOUNDABSTRACTTETRISISAPOPULARGLOBALDIVERSIFICATIONOFTERMINALENDURINGGAMESIMPLEBASICRULESOFTHEGAMEISROTATING,MOVING,AUTOMATICRANDOMOUTPUTOF7KINDSOFSHAPESQUAREGAMEITFORMS28KINDSOFSHAPE,AFTERROTATINGCUBESTACKEDTOGETHER,FORMINGCOMPLETEONEORMORELINESTOELIMINATESCOREITSLEVELAUTOMATICALLYRISESWITHTHESCORETHEGAMEISEASYFORYOUNGANDOLD,HASBECOMEAHOUSEHOLDNAMETHISPAPERNOTONLYGIVETHEDETAILEDANALYSISOFTHETRADITIONALTETRISWHICHBASEDONTHEBASICPRINCIPLEANDSIMPLERULESBUTALSODEVELOPTHECOLORVARIABLEMODEL,SUCHASRANDOMCHANGETHEBACKGROUNDCOLORANDFOREGROUNDCOLORANDSOONFURTHERMORE,INTHISPAPER,THEABOVEFUNCTIONSAREGIVENTHEIMPLEMENTATIONPROCESS,THEDETAILEDDESCRIPTION,ANDSOMESOURCECODETHEPAPEREXPOUNDSTHEHISTORYOFTHEGAME,DEVELOPSTHEMEANINGOFTHEGAMEANDTHEENVIRONMENTOFDESIGNACCORDINGTOTHERELEVANTKNOWLEDGEOFSOFTWAREENGINEERING,THEAUTHORREPORTSTHEDEMANDANALYSIS,OUTLINEDESIGN,DETAILEDDESIGN,PLANNINGANDEXECUTIONOFTHETESTTHISDESIGNISUNDERMICROSOFTWINDOWSXPSYSTEM,BASEDONJAVADEVELOPMENTLANGUAGE,THEMYECLIPSEDEVELOPMENTPLATFORMSTOCARRYONTHEDESIGNANDIMPLEMENTATIONOFTHEGAMEKEYWORDSGAME,TETRIS,SOFTWAREENGINEERING,MYECLIPSE目录1引言12系统的需求分析221系统需求222接口控制23系统的概要设计431软件运行和开发工具432系统功能设计4321手工处理业务的基本流程4322基本流程的功能模块54系统的详细设计与实现841游戏主界面显示模块842画布、方块显示模块9421背景画布模块设计10422预览方块模块设计11423方块移动、旋转设计1443控制面板模块18431菜单栏模块设计18432控制面板按钮设计205系统的调试运行2151测试的意义及注意事项2152游戏代码、算法的测试2153游戏界面菜单选项的功能测试2254按键事件的功能测试2455方块堆砌与消行测试2556测试结果分析266结论27参考文献28致谢291引言俄罗斯方块的影响已毋庸置疑,当今世界的电脑、手机到处都有俄罗斯方块的踪迹,同时它更是每个游戏平台的必备游戏,相关的复制品不胜枚举。这个最早由莫斯科的数学家亚力克西帕杰诺夫ALEXEYPAJITUOV所设计的作品,被公认为有史以来最畅销的经典游戏,至今魅力不减当年。亚力克西帕杰诺夫曾在俄罗斯科学研究院电脑中心工作,当时他在ELETRONICA60的旧型俄罗斯主机上进行开发工作,这种机器不支持图形界面,和PC也不兼容。他尝试将一种传统的拼图游戏PENTOMINO改写成电脑游戏。PENTOMINO一共有十二种形状,各以七个方块组合而成。帕杰诺夫试着写了一个程序,旋转并移动这十二种不同形状的方块,让它们拼成一大块。后来几经修改,发展成我们现在所熟悉的经典模式。俄罗斯方块曾经引起的轰动和制造的经济价值可以说是游戏史上无可比拟的。它看似简单但却变化无穷,令人爱不释手。俄罗斯方块游戏是随计算机的发展而发展,并不断推陈出各种新演变出的类似游戏,深受广大玩家喜爱。游戏模式有的简单、有的复杂,但其根本原理是都是对随机出现的方块进行组合,来训练玩家的反应能力、逻辑思维能力。游戏软件,大多数人都视其为神妙莫测,高不可及的东西。一般来说,游戏软件也确实具有很高的技术难度,随着开发工具和软件开发方法学的不断发展,自己动手开发游戏也并非难事。俄罗斯方块游戏可以上说是一种古老而又有趣的游戏。游戏软件不计其数,网上也有很多关于游戏实现的复杂算法和设计,其难度让一般初学者望而却步。本文利用数组作为方块的数据结构,用颜色变化作为方块下落和移动的标识,提出一种用JAVA语言实现游戏的简易方法,在经典模式的基础上实现等级可变,颜色可变等功能,初学者可仿此开发类似游戏,并了解游戏软件的设计与开发过程。俄罗斯方块游戏以其益智、简单又不乏挑战、创意独特的游戏模式,吸引了众多游戏爱好者,而且老少皆宜。当今社会里,人们的工作压力随着生活节奏的快速提高而逐渐繁重,随之减少的是可以自由支配的休息时间,人们迫切地需要一种既简单又节省时间的快速休闲方式。无可争议,它是永恒的娱乐经典,且它的代码简单,界面简洁,从最初发行时的单个游戏机到现在便捷的安装到电脑、手机、MP4、电子词典、商务通、IPAD、ITOUCH等便携设备,俄罗斯方块风靡世界,经久不衰。本次课题研究可以说是对游戏开发的一次尝试,无论从技术还是社会意义上看都是很有价值的。2系统的需求分析对系统的需求分析就是用户和开发人员在“系统必须做什么”这个问题上实现相互理解,达到共识,从而形成双方认可的软件产品的需求规格。这样有利于提高软件开发过程中的能见度,便于对软件开发过程的控制与管理,便于采用工程化的模式开发软件,从而达到提高软件的质量,为开发人员、维护人员、管理人员之间的交流、协作提供便捷。作为工作成果的原始依据,系统的需求分析可以向潜在用户传递软件功能、性能的需求,使其能够判断该软件是否符合自己的需求。21系统需求系统随机产生7中不同形状的方块,旋转后有28种状态。方块自由下落,玩家通过键盘控制方块的移动和旋转,把方块摆放在适当的位置。如果方块落下时,有被方块填满的整行,则该行可消去。每消去一行,玩家得分增加10分,每满100分,玩家等级增加一级。若由存在空格的方块填满整个窗口,则游戏宣告失败。游戏功能需求如下游戏界面需求设计良好的游戏界面可以让玩家充分感受到游戏带来的娱乐性,游戏的默认背景色是深绿色,主界面方块默认用橘黄色,预显方块颜色默认为淡紫色。背景色、前景色对比鲜明,以达到让玩家眼前一亮的感觉,并能在游戏达到高等级状态,方块下落速度渐高的情况下使玩家能够清楚的分辨出下落方块的形状,增加游戏的刺激性。游戏形状需求用数组作为存储方块28种状态的数据结构,即长条形、Z字形、反Z形、田字形、7字形、反7形、T字型一共7种形状的向4个方向的旋转变形,各个方块要能实现它的任意变形,可设为顺时针变形或逆时针变形,一般为逆时针变形。方块的可否翻转需要加以判断,以防止其翻转越界。键盘处理事件需求方块下落时,可通过键盘方向键(上键、下键、左键、右键)或字母键I、K、J、L对下落方块进行向上(旋转变形)、向下(加速下落)、向左移动、向右移动。鼠标处理事件需求通过点击菜单栏中相应的菜单项或控制面板内的按钮,可以实现游戏的开始、结束、暂停、继续、提高等级、降低等级,预显方块形状的显示,分数、等级的显示,以及游戏帮助、颜色变换等功能。显示需求当方块填满一行时可以消行,剩余未填满的行逐次向下移动并统计分数。当达到一定分数的时候,会增加相应的等级。当方块充满主界面的每一行,方块不能再下落时,提示“GAMEOVER”的字样。非功能性需求本系统非功能性需求包括游戏主界面左上角显示图标需求、窗口尺寸可调整性需求、游戏运行时主界面弹出位置居中需求等。22接口控制本游戏通过键盘和鼠标进行操作,在WINDOWS的操作系统下,利用键盘的按键对方块进行移动、变形,要使用到键盘的接口事件。游戏使用鼠标对游戏进行全程控制,如游戏的开始、暂停、继续、查看游戏帮助、更改界面颜色、更改游戏等级等,通过对鼠标单击、按键添加监听事件,编辑相应代码来实现相应功能。3系统的概要设计31软件运行和开发工具操作系统MICROSOFTWINDOWSXPPROFESSIONALSERVICEPACK3内存2G硬盘320GCPU赛扬28交互工具键盘、鼠标显示器VGA显示器JDK版本JDK16002ECLIPSE版本MYECLIPSE85SDK34WIN3232系统功能设计321手工处理业务的基本流程本游戏的设计以娱乐为初衷,以益智为目的,在综合研究以往俄罗斯方块经典游戏功能的基础上推陈出新,加之新的功能,赋以新的生机和活力。图31为游戏基本流程图具体阐述游戏的基本流程。运行说明1运行程序,点击右侧控制面板内的“开始”或“控制”菜单内的“开始”按钮开始游戏。2使用上、下、左、右键或I、K、J、L键控制方块的变形、下落、向左和向右移动。3方块满行消除,分数自动增加,分数每满100等级自动增加一级。4等级增加、方块下落速度增加,按右侧控制面板或“游戏”菜单内的“提高等级”、“降低等级”按钮,来手动改变游戏等级。也可点击“颜色”菜单内的选项,更改前景色、背景色。5按右侧控制面板或“控制”菜单内的“暂停”可以控制游戏暂停,然后按“继续”可以控制游戏继续上次游戏。按“停止”按钮,游戏会彻底停止正在进行的当局游戏,再按“开始”或“控制”菜单内的“重新开始”会开始新游戏。6当方块占满整个窗口,不能再有新方块下落时,游戏会弹出“GAMEOVER”的对话框提示游戏结束。玩家操作方块初始化方块是否到达底部否是否满行是玩家更改前景色、背景色、等级等玩家积分增加是积分达到100玩家等级增加是是否到达顶部是暂停、继续、停止、重新开始结束开始否否显示GAMEOVER游戏结束图31游戏基本流程图322基本流程的功能模块本系统基于游戏的各项功能来设计游戏的各个功能模块。图32为本游戏的系统功能模块示意图,如图所示,本游戏主要有两大模块游戏界面区,游戏控制区。游戏界面区分显示玩家可选操作、显示玩家操作结果两个部分。游戏控制区分更改颜色、开始、暂停、继续、停止、重新开始、提高等级、降低等级、退出等功能模块。俄罗斯方块游戏游戏界面区游戏控制区显示玩家可选操作显示玩家操作结果开始暂停、继续提高等级更改颜色降低等级退出停止重新开始图32系统功能模块示意图图33为游戏界面区模块设计示意图,如图所示,游戏界面区模块可细分为闯进新游戏界面、处理玩家操作、显示玩家操作结果三个功能模块。游戏界面区创建新游戏界面处理玩家操作显示玩家操作结果图33界面模块示意图图24为游戏控制区设计示意图,如图所示,游戏控制区模块分为开始、暂停、继续、初始游戏级别设置、初始颜色设置、退出等功能模块。游戏控制区开始暂停初始级别设置退出初始颜色设置图34控制区模块示意图4系统的详细设计与实现JAVA是一种纯面向对象(OBJECTORIENTED)的程序语言,它的诸多优点在此就不作详细论述了。从面向对象的观念出发,本程序主要可分为以下几个模块游戏主界面显示模块方块及数据显示模块方块移动控制模块游戏界面颜色控制模块游戏进度、等级控制模块分析对象的技巧在于它的功能的扩展性及维护效率。试想,如果因为外部环境或者用户需求的变化需要对程序进行功能扩展或者维护,就要对代码作大幅度的更动甚至重写,这样就失去了面向对象的优势,所以在本程序分析时将独立性高的模块作为一个对象,以提高程序的可扩展性和可维护性。以下该游戏中类的设计CONTROLMAINGAME类继承自JFRAME类,作为游戏的主类,负责对游戏的主体全局进行控制,连接与指挥各个类的枢纽。CONTROLPANEL类继承自JPANEL类,作为操作面板类,负责安放主游戏窗口,积分板,级别控制按钮等窗口用以控制游戏进程。CHANGEBLOCKCOLOR类继承自JPANEL类,CHANGEBLOCKCOLOR线程类动态改变画布类的方格颜色,画布类通过检查方格颜色来体现CHANGEBLOCKCOLOR方块的移动情况与消去状况。BLOCKPAINT类方格类,组成方块的基本元素,主要表达方式为颜色。BLOCKOPERATION类继承自THREAD类,作为操控方块的类,控制方块的移动,下落以及变形。41游戏主界面显示模块一个优秀的软件系统不仅体现在核心的功能的多样性和强大上,如果使用者所面对的是枯燥的、陈旧的界面的话,那么这个的软件系统是不成功的,所以好的、精美的界面设计是极为重要的环节。为玩家设计制作布局合理、视觉效果良好的界面的重要性就不言而喻了。游戏主界面采用SWING组件开发,并且向其注册监听器,以实现各种控制功能,综合游戏窗体的设计,其上至少需要注册三个监听器,分别是动作监听器ACTIONLISTENER、键盘监听器KEYLISTENER、选项监听器ITEMLISTENER。根据初步设计,可以确定客户端上所要用到的SWING组件对象有JFRAME对象、JPANEL对象,JLABEL对象、JBUTTON对象、JMENUBAR对象、JMENU对象、JMENUITEM对象、JTEXTFIELD对象、JTEXTAREA对象、JDIALOG对象等,至少十个SWING组件对象。下图41为游戏主界面截图。图41游戏主界面截图本游戏主界面设计的初始颜色搭配基于对比鲜明的原则,默认背景色为深绿色,左上角设置俄罗斯方块图标,得分初始值为0,等级初始值为1,最高分记录初始值为0。游戏主窗体尺寸设置为(520,580),方块移动范围窗格由一个20行、12列的二维数组控制,且左上角图标设置为方块图案,起标识作用。42画布、方块显示模块本游戏中将画布底色默认设计成深绿色,在方块下落过程中,根据颜色的变化识别下落的方块。421背景画布模块设计该游戏的主背景画布是一个20行、12列的二维数组,方块显示是由相应颜色变化来标识,主窗体用颜色填充后可形成呈现出来背景样式和方块。本游戏用继承自JPANEL的CHANGEBLOCKCOLOR类控制背景画布的显示,用ROWS代表画布的行数,COLS代表画布的列数,行数和列数决定着画布拥有方格的数目。背景画布实现代码如下/CHANGEBLOCKCOLOR类画布类的构造函数ROWSINT,画布的行数COLSINT,画布的列数行数和列数决定着画布拥有方格的数目/CLASSCHANGEBLOCKCOLOREXTENDSJPANELPRIVATECOLORBACKCOLORNEWCOLOR0,51,0,FRONTCOLORNEWCOLOR255,153,0PRIVATEINTROWS,COLS,SCORE0,SCOREFORLEVELUPDATE0PRIVATEBLOCKPAINTBOXESPRIVATEINTBOXWIDTH,BOXHEIGHTPUBLICCHANGEBLOCKCOLORINTROWS,INTCOLSTHISROWSROWSTHISCOLSCOLSBOXESNEWBLOCKPAINTROWSCOLSFORINTI0I每次执行首先为随机数产生不同的初值。STYLEBLOCKOPERATIONSTYLESINTMATHRANDOM7INTMATHRANDOM4STYLES的下标长条形T形反Z形Z形7形反7形方块形随机数图42随机产生方块图2随机选取一个图形,图31随机产生方块图具体描述用生成的随机数控制产生的图形。3当前图形在其44网格中的位置信息。绘制4行4列的方块预显方格,随机生成预显示的方块样式。本游戏用二维数组存储方块的28种样式。PUBLICFINALSTATICINTSTYLES/分别对应对7种模型的28种状态0X0F00,0X4444,0X0F00,0X4444,/长条型的四种状态0X04E0,0X0464,0X00E4,0X04C4,/T型的四种状态0X4620,0X6C00,0X4620,0X6C00,/反Z型的四种状态0X2640,0XC600,0X2640,0XC600,/Z型的四种状态0X6220,0X1700,0X2230,0X0740,/7型的四种状态0X6440,0X0E20,0X44C0,0X8E00,/反7型的四种状态0X0660,0X0660,0X0660,0X0660,/方块的四种状态以下为与数组相对应的方块样式截图。长条型的四种状态图43长条型状态截图T型的四种状态图44T型状态截图反Z型的四种状态图45反Z型状态截图Z型的四种状态图46Z型状态截图7型的四种状态图477型状态截图反7型的四种状态图48反7型状态截图方块的四种状态图49方块状态截图423方块移动、旋转设计方块的翻转与移动比较容易实现,方块移动只需要改变方块的横坐标或纵坐标,然后重新绘制方块即可。方块翻转也只需要改变背景数组的值,重新绘制方块即可。本游戏方块下落时,进行动态绘制,实现CLONEABLE接口,以指示OBJECTCLONE方法可以合法地对该类实例进行按字段复制。方块的操作类BLOCKOPERATION继承THREAD类,重写RUN方法,以实现方块的动态正确下落。当然,在线程中要判定方块是处于MOVING状态还是PAUSING状态。PUBLICVOIDRUN/MOVING判定方块是否在动态下落WHILEMOVINGTRY/BETWEENLEVELTIME指示相邻等级之间相差时间SLEEPBETWEENLEVELTIMECONTROLMAINGAMEMAXLEVELLEVELFLATGENECATCHINTERRUPTEDEXCEPTIONIEIEPRINTSTACKTRACE/PAUSING判定游戏是否处于暂停状态IFPAUSINGMOVINGMOVETOY1,X/MOVING是在等待的100毫秒间,MOVING没被改变当然,在游戏中还要判定方块移动的边界问题,比如,一个方块在它左边正好差一个格子的空间才能够翻转,但是它的右边恰好有一个格子的空间,这种情况,如果方块不能够翻转,就不方便用户操作,如果能够翻转,就会发生越界,将已经存在的方块挤占掉。要想实现翻转又不发生越界,那么,就应该在方块翻转后把它往右边移动一个格子,然后再绘制方块,这样,方块就不会挤占掉其它已经固定住的方块了,以下解决越界问题。1方块翻转判定在两种情况可能发生越界,一种是方块落下去固定住以后,第二种是周围的空间不允许它进行翻转。第一种情况只需要参考方块落下去后不能够再移动的判定即可。对于第二种情况,在每次方块翻转前,必须首先计算出方块周围的空间,如果空间允许则翻转。否则,不能翻转。因为七种方块是不规则的,每种方块要求的翻转空间都是不一样的,甚至是在它的不同翻转状态下,所要求的翻转空间也是不一样的,首先想到的自然就是为每一种方块,方块的每一种状态都写一个判定条件,但是这样做未免过于麻烦。根据观察,不难发现,七种形态的方块,长条形的方块如果以横条的形态下落,则只要能够下落,就能翻转,如果以竖条的形态下落,那么它翻转后所处的位置必须要有4X1个格子的空间才能够翻转。对于田字形的方块,只有能够继续下坠,就一定能够翻转,所以田字型的方块只要没有落下,就一直能够翻转。而其它五种形态的方块,又有一个共同点,就是它们都有两种翻转状态横向占三个格子的空间,竖直方向占两个空间,另外两种翻转状态横向占两个格子的空间,竖直方向占三个格子空间,如果他们是以横向占三个格子的状态下落,那么只要能下落,就一定能够翻转,如果是以横向两个格子的状态下落,那么在翻转后,周围必须要有3X2个格子的空间。所以,方块翻转的判定,要分三种情况,第一种情况是方块落下去后不能翻转;第二种情况是对竖直状态出现的长条形的方块进行翻转判定;第三种情况是对除长条形和田字形之外的其它五种以横向占两个格子的状态出现的方块进行翻转判定。何种情况下方块能够翻转的问题解决了,接下来,我们就应该解决方块翻转后所处的位置的问题了,因为只有事先知道方块翻转后所处的位置,才能够对那个位置的空间范围进行判定,判定它是否能够容纳方块。可以确定的是,无论方块怎么翻转,都处在方块数组中,也就是说方块必定是在游戏地图中某一4X4个格子的空间范围内。方块数组在游戏主界面中的坐标是确定的,不确定的是方块翻转后到底处在方块数组的哪个位置,为了解决这个问题,我们可以限定方块在方块数组中的存储原则是靠左、靠上,这样,无论翻转怎么翻转,方块数组中第一行和第一列都是有方块的,这样也就确定了方块在方块数组中的位置,也就可以得知方块翻转后在游戏地图中的位置了。假定方块数组的横纵坐标是X和Y,那么,这个位置就是,长条形的方块翻转后所处的那一行是游戏地图的第Y行,所占的列是第X到X3列,长条形和田字形以外的五种方块翻转后的所占的行数是游戏地图的第Y和第Y1行,所占的列是第X到X2列。所以,如果以上空间有空格子,方块就能够翻转。2翻转越界纠正只要方块翻转后所处的空间足够,方块就能够翻转,但是,如果方块翻转后所处的空间不足够,而在它的另一边却有足够的空间呢方块在边界处时,翻转后不仅可能翻出地图外,还可能发生数组越界,当然,只需要将地图数组定义得大一些,就能够避免数组越界错误,对于方块越界,如果在它的另一边有足够空间,那么,就应该把方块往另一个方向移动适当的单位,纠正方块越界错误。如图410方块翻转流程图所示,方块翻转需要经三次判定是否已经下落到底部、翻转后是否有足够空间、翻转后是否越界。开始接收到翻转信息方块是否落下翻转后是否有足够空间翻转后是否越界翻转越界纠正结束否是是不能翻转不能翻转直接翻转是否否410方块翻转处理流程图玩家操作键盘实现方块的移动、旋转,代码引进CONTROLKEYLISTENER类继承KEYADAPTER类进行键盘监听功能的实现。KEYADAPTER类继承自OBJECT类,实现KEYLISTENER接口,用来接收键盘事件的抽象适配器类。此类中的方法为空。此类存在的目的是方便创建侦听器对象。扩展此类即可创建KEYEVENT侦听器并重写所需事件的方法,即是CONTROLKEYLISTENER类。使用CONTROLKEYLISTENER可创建侦听器对象,然后使用组件的ADDKEYLISTENER方法向该组件注册此侦听器对象。当按下、释放或键入某个键时,将调用该侦听器对象中的相应方法,并将KEYEVENT传递给相应的方法。实现代码如下PRIVATECLASSCONTROLKEYLISTENEREXTENDSKEYADAPTERPUBLICVOIDKEYPRESSEDKEYEVENTKEIFGAMEISPLAYINGRETURNBLOCKOPERATIONBLOCKOPEGAMEGETCURBLOCKSWITCHKEGETKEYCODECASEKEYEVENTVK_DOWNBLOCKOPEMOVEDOWNBREAKCASEKEYEVENTVK_LEFTBLOCKOPEMOVELEFTBREAKCASEKEYEVENTVK_RIGHTBLOCKOPEMOVERIGHTBREAKCASEKEYEVENTVK_UPBLOCKOPETURNNEXTBREAKDEFAULTBREAK43控制面板模块431菜单栏模块设计菜单栏中有“游戏”、“背景”、“控制”、“帮助”四个菜单选项。“游戏”选项又分“新游戏”、“提高等级”、“降低等级”、“退出”四个选项。“背景”选项又分“前景色”、“背景色”,下分若干种颜色。“控制”选项分“开始”、“暂停”、“重新开始”、“停止”。“帮助”选项分“游戏帮助”、“关于”。相关截图如图411、图412、图413、图414所示。411菜单栏“游戏”选项412菜单栏“背景”选项413菜单栏“控制”选项414菜单栏“帮助”选项1“新游戏”的按钮功能为实现游戏画布的重新绘制,类似RESET的功能。该按钮的监听实现代码如下/“新游戏“按钮添加监听MINEWGAMEADDACTIONLISTENERNEWACTIONLISTENERPUBLICVOIDACTIONPERFORMEDACTIONEVENTAE/停止游戏STOPGAME/让游戏“复位”到初始状态RESET/设置游戏难度SETLEVELINITLEVEL2“提高等级”、“降低等级”按钮用来手动调节游戏的等级,从而改变方块下落的速度。“退出”按钮控制游戏随时退出,终止游戏。3“背景”按钮中的“前景色”、“背景色”又有“黑色”、“白色”、“红色”、“蓝色”等选项,根据选项可更改主界面和预显窗口的背景色以及方块的颜色。玩家可根据个人喜好,更改游戏窗口颜色,方便,快捷。4“控制”选项的“开始”子选项控制游戏的开始,点击按钮,方块开始下落。5“帮助”按钮中“游戏帮助”选项,点击可弹出对话框显示游戏帮助信息,点击6“关于”按钮显示与游戏软件本身相关信息,具体信息如图所示432控制面板按钮设计本游戏控制面板中包含得分统计、等级统计、最高分记录统计等字段,其中的TEXTFIELD控件均由游戏本身统计给出,玩家不能私自编辑。本游戏的游戏规则为每消一行得10分,每增加100分上升一个等级,初始得分为0,初始等级为1,“最高分记录”记录游戏的目前最高分记录。以下给出得分、等级更新字段的代码/当一行被游戏者叠满后,将此行清除,并为游戏者加分/ROWINT,要清除的行,是由BLOCKPAINTESGAME类计算的/SYNCHRONIZED设置同步PUBLICSYNCHRONIZEDVOIDREMOVELINEINTROW/绘制方块FORINTIROWI0IFORINTJ0J语法错误语法错误是经常碰到的错误。例如,命令拼写错误或传递给函数的参数不正确都将产生错误。语法错误可能导致不能继续编写代码。2逻辑错误逻辑错误通常可能是潜在和难以检测的。当有因键入错误或程序逻辑流程引起的逻辑错误,可能会成功运行,但产生的结果却是错的。例如,当本应使用小于符号比较数值,但却使用了大于符号时,那么将返回不正确的结果。3运行时错误运行时错误是在执行过程中指令试图执行不可能的动作而导致的,必须纠正运行时产生的错误,这样才能保证软件运行的可靠性。本游戏在开发过程中采用了多种有效措施进行测试以保证软件质量,对本游戏进行了边界处旋转、方块翻转越界等方面的测试,极大的保证了软件质量和出错几率。但是系统中可能还存在着一些其他的错误和缺陷,因此,游戏必须要经过反复的运行测试,尽最大量将BUG减到最少。52游戏代码、算法的测试1写GET方法时需要有返回值,但是程序中没有写RETURN语句,使程序在编译时出现错误。解决方法是,在方法中加入RETURN语句,返回相应的内容即可。2使用随机函数产生方块时没有给各个方块传入参数,编译不能通过。解决方法是,根据各个方块的构造传入相应的参数。3写T字形方块各方格的默认位置时,将控制方块位置的变量I,初始化为0,运行的结果是丁字形方块默认成了竖形方块。解决方法是,将变量I的初始化数值改为1,即可达到设计的效果。4运行程序时,统计的分数只是每一次消除满行后的分数,而以前的分数就会被覆盖,没有累计。解决方法是,将程序中的“SCORE”改为“SCORE”,就可以使分数累加。5算法流程的错误主要集中在如何检测及消去方块,还有如何在通关之后对分数的累加进行处理,是否升级的判定这些方面,经过与同学的讨论以及参考资料,都最终得到了解决。53游戏界面菜单选项的功能测试1“游戏”菜单测试点击“游戏”“新游戏”输出游戏重置结果正常点击“游戏”“退出”输出游戏结束结果正常点击“游戏”“提高等级”输出等级提高一级结果正常点击“游戏”“降低等级”输出等级降低一级结果正常2点击“背景”菜单测试点击“背景”“前景色”“黑色”输出方块颜色变成黑色结果正常点击“背景”“背景色”“黑色”输出背景颜色变成黑色结果正常3“控制”菜单测试点击“控制”“开始”输出开始游戏,方块开始下落结果正常点击“控制”“暂停”输出暂停游戏,方块停止下落结果正常点击“控制”“重新开始”输出重新开始新游戏结果正常点击“控制”“停止”输出游戏停止结果正常4“帮助”菜单测试点击“帮助”“游戏帮助”输出弹出对话框,提示游戏规则结果正常图51游戏帮助菜单运行截图点击“帮助”“关于”输出弹出对话框,提示游戏软件版本相关信息结果正常图52游戏关于菜单运行截图54按键事件的功能测试1方块移动测试游戏过程中,点击“左、右、下”方向键输出方块正常移动,不会移出边界结果正常2方块旋转测试游戏过程中,点击向上方向键输出方块无边界和障碍物阻挡的情况下可反转结果正常55方块堆砌与消行测试1方块堆砌测试当方块下落到最底面或与障碍物接触时输出方块成功堆砌在底部结果正常2游戏消行测试当出现满行现象时输出所有满行被消除,方块依次下移结果正常图53游戏结束状态截图3游戏结束测试当出现满屏现象时输出弹出会话窗口,提示“GAMEOVER”,如图53所示。56测试结果分析经过本次系统测试,本游戏实现预设的基本功能,不过整体功能还不够强大,创新方面做的稍微逊色,作为开发的第一个版本,游戏在功能、界面设计等很多方面还需要进一步完善。6结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论