Android俄罗斯方块课程设计报告.docx_第1页
Android俄罗斯方块课程设计报告.docx_第2页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

俄罗斯方块河南城建学院课程设计报告书专 业:计算机科学与技术 课程设计名称:java高级应用题 目:俄罗斯方块 班 级:学 号: 设 计 者: 同 组 人 员: 指 导 老 师: 完 成 时 间:2016年06月0814目录一、设计目的1二、需求分析22.1游戏功能的需求分析22.2方块及旋转变换需求分析32.3游戏运行需求分析42.4消行和分数统计需求分析5三、模块分析及设计63.1 总体设计思想63.2功能模块6四、制作过程及要点94.1 游戏一个单元块的设计与实现94.2俄罗斯方块的控制设计94.3 俄罗斯方块的设计与实现104.4要点分析10五、设计总结12六、参考资料13一、 设计目的 在个人电脑日益普及的今天,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一,它以其趣味性强,易上手等诸多特点得到了大众的认可,因此开发此游戏软件可满足人们的一些娱乐的需求。 此俄罗斯方块游戏可以为用户提供一个可在普通个人电脑上运行的,界面美观的,易于控制的俄罗斯方块游戏。俄罗斯方块是家喻户晓的益智小游戏,它由俄罗斯人阿列克谢帕基特诺夫(alexey pazhitnov)在1984年6月利用空暇时间编写的游戏程序,故此得名。俄罗斯方块的基本规则是移动、旋转和摆放游戏随机产生的各种方块,使之排列成完整的一行或多行并且消除得分。它看似简单却变化无穷,俄罗斯方块上手极其简单,且游戏过程变化无穷,作为游戏本身很有魅力,但是要熟练掌握其中的操作和摆放技巧,难度却不低。此软件给用户提供了一个展现自己高超技艺的场所,在这里,它不仅放松自己,还能感受到游戏中的乐趣。游戏区域会从顶部不断随机落下7种方块类型的一种,游戏区域右上角有一个区域可以显示下一个方块的形状,玩家可以控制俄罗斯方块移动、旋转。通过玩家的操作,下坠物在游戏区域以“摆积木”的形式出现。下坠物在一行或多行堆满后就可以自动消除,消行后会得到相应的分数,如果当前下坠物堆积至窗口顶端,则游戏结束。二、需求分析2.1游戏功能的需求分析先分析一下整个游戏的具体实现,首先,游戏有开始、帮助、切换界面、结束游戏等操作接口,而在游戏过程中,随着玩家的按键,会出现下坠物的形态变化、摆放下坠物件、销毁填满的行以及分数的增加和等级速度、产生下一个方块、退出等功能。先分析游戏的特点,游戏需要产生不同种类的俄罗斯方块,要对俄罗斯方块进行左右移动,旋转,加速下落等功能,然后对这些功能一一进行细化,写出对应的实现的代码,并美化游戏界面,从而完成整个游戏的设计。 2.1.1游戏方块控制功能当玩家按下相应的操作键位时,通过条件判断,判断该操作是否可行,如果可行就执行相应的操作。主要的操作有游戏方块的左移,右移,旋转变形以及方块加速。例如当按下左移按钮时,方块会进行判断是否可左移,返回值为真时可以左移,否则不能。 2.1.2方块的生成及显示功能游戏中会有两个地方产生俄罗斯方块,一个是游戏区域上方会有俄罗斯方块落下,还有就是在屏幕右上角,也会产生下一个俄罗斯方块,该俄罗斯方块为游戏区域下一个要产生的方块。同时当游戏俄罗斯方块左右移动,下落,旋转变形时,要与先前的游戏方块重合并完成消除行功能,还要求出被操作后的方块坐标,用新坐标重绘下一个游戏方块。2.1.3方块的摆放消行功能当方块落到底部的时候,通过条件判断,把方块摆放在屏幕底部并持续显示,当某行或者某几行被填满的时候,要把这几行消除,并且被消除的行数上方的方块整体下移。2.1.4游戏分数统计功能记录游戏积分,每当有行被消除时,游戏积分会根据一次消除的行数而增加相应的分数,分数要设置一个最高值,当到达最高分时等级增加,难度增大。 2.1.5游戏速度更新功能当游戏积分达到某一条件时,系统将自动为玩家提高难度。难度增加的时候,方块的下降速度会加快,增加游戏可玩性和趣味性。2.1.6游戏等级更新功能当游戏积分达到某一条件时,系统将自动为玩家提高难度。难度增加的时候,方块的下降速度会加快,相应的等级也会增加,增加游戏可玩性和趣味性。2.1.7游戏结束控制功能通过判断,如果摆放的方块超过屏幕顶端的时候,则游戏结束,可以返回菜单重新开始游戏。也可通过点击退出按钮,结束游戏,退出游戏界面。2.2方块及旋转变换需求分析本游戏共有7种类型的方块,而每种类型方块还可以通过旋转变换成4种不同形态的方块进行摆放。方块生成后可以将它们摆放在一个游戏显示运行的区域内,该区域可以看作是有许多个等面积小方格构成的区域,而这些区域的状态只有两种,被方块占据或空闲。因此,对于整个游戏区域的空间是占据或空闲,可以用一位数来标识,对于7种方块和它们旋转后的形态我们可以用不同的标识进行标记。对于旋转,游戏中所有方块都是按照顺时针旋转的规则进行的,而且在旋转过程中它们不会因为旋转而下降,总会保持在同一高度,但是在同一高度最多旋转三次,就会下降一格,任何下坠物经过一个旋转周期还会变回原型。2.3游戏运行需求分析游戏开始后会随机产生一个方块,显示在游戏区域,同时右上角也会随机产生一个新的方块,该方块为游戏区域下一个将要产生的方块,游戏区域不再随机生成方块。当游戏区域的方块下落到底后,新的方块再次进入游戏区域,如此循环,直到游戏结束,这就是游戏的正常工作。当用户进行一定的操作交互的时候,运行程序可以根据用户的操作指示对方块进行控制,而这些操作都是响应相关的按键而执行的。按游戏中定义的旋转键,此事件实现下坠方块旋转操作,方块并非任何情况都能旋转,如果旋转后与已摆放好的方块有冲突或超出边界时,均不能发生旋转。因此首先要判断是否有足够的空间进行旋转,然后决定是否旋转。按游戏左键,此事件实现下坠方块左移操作,首先要判断此方块是否能够发生左移,当越界或被其他摆放好的方块阻挡时,则不能左移。按游戏右键,此事件实现下坠方块右移操作。首先要判断此方块是否能够发生右移,当越界或被其他摆放好的方块阻挡时,则不能右移。2.4消行和分数统计需求分析 当一个方块下落到游戏区域底部进行摆放后就要进行一次消行检测,检测是否有行被填满,检测时从刚摆放的方块最上面那一行开始往下检测,由于方块的形状限制可知每次最多只能消除四行,所以只需检测四行即可。检测到一行被填满时该行上面的方块整体下移一行,包括空洞,然后继续检测下一行,直到四行都被检测完。消行以后要统计游戏的积分,根据每次消除的行数t的不同而累加不同的积分,游戏积分通过公式score+=t*t*100来计算,消除一行得100分,消除两行得400分,消除三行得900分,消除四行得1600分。设置最高分数,当分数达到最高分数后,游戏等级增加,游戏速度数值会增加以及加快速度,游戏速度有一个最大值,当到达这个值时,游戏速度将不再加快。分数统计和消除行是连贯动作,在消除行后要对分数进行增加,同时页面更新,页面上的分数,等级,速度都会更新,游戏区域的方块也更新,有一行被消除,游戏继续。当方块落到底部的时候,通过条件判断,把方块摆放在屏幕底部并持续显示,当某行或者某几行被填满的时候,要把这几行消除,并且被消除的行数上方的方块整体下移。三、模块分析及设计3.1 总体设计思想俄罗斯方块游戏设计主要从9个方面进行构思。(1)游戏主界面的设计。(2)方块的设计。(3)方块的旋转。(4)方块的运动情况(包括向左、向右)(5)方块的自动消行功能。(6)游戏速度的调节。(7)游戏积分的计算。(8)游戏开始菜单的设计。(9)游戏结束界面的设计。3.2功能模块3.2.1开始和退出游戏模块首先开始和退出游戏按钮出现在进入游戏界面和游戏界面,需要在xml下加入button按钮,当点击按钮时跳转到目标界面或者开始游戏。例如点击进入游戏的开始按钮,会进入游戏界面,游戏界面也可点击开始按钮才能开始游戏,游戏开始后可以点击退出按钮,终止当前游戏,返回到进入游戏界面,或者当方块满时,游戏自动结束,退出游戏界面。 图3.1 图3.23.2.2游戏控制模块俄罗斯方块包括对游戏中的方块进行的操作,如左(右)移动,旋转,下落加速等功能。 图3.3 图3.43.2.3游戏帮助功能在游戏的开始界面上,当玩家对该游戏不熟悉时可点击帮助按钮。 图3.5 图3.6 四、制作过程及要点4.1 游戏一个单元块的设计与实现每一个俄罗斯方块包括四个四个单元块,设置一个单元块的大小,对单元块的位置用坐标表示,根据绘制好的网格定义单元格坐标,判断单元格的一些功能的实现,例如旋转,左右移动,是否与其他单元块接触。通过检测单元块是否超界来判断,并把结果返回。4.2俄罗斯方块的控制设计方块是游戏最基本的元素,俄罗斯方块所有的操作都是建立在对方块的操作上。对方块的控制,实际就是对每一个小方块的控制,一个俄罗斯方块单元是由4个小方块构成,通过计算每一个小方块的横纵坐标来表现出一个下落或者一个已经摆放好的俄罗斯方块单元。由此来布置游戏区域方块的显示,方块的控制主要在tetrisblock类里实现,用来判断方块的各种操作是否可行,如果可行则执行相应的操作,否则操作无效。控制方块时,首先要判断该操作是否可以执行,判断方法主要有判断方块是否可以左右移动,判断方块是否碰壁,判断方块是否触顶。判断方块是否可以左移。包括方块的翻转以及当某一行的方块满后的消除功能。首先对俄罗斯方块的定义进行初始化,如种类,方向,颜色,以及存放用的数组。俄罗斯方块需进行判断,需要对每个单元块进行判断,例如是否能旋转,需要每一个单元块都能旋转,整个方块才能旋转,接着是判断是否接触边界,如果已接触边界,则不能左(右)移动,否则可左(右)移动,方块下落过程中可加速,需判断是否接触底端或与其他方块接触,接触则不能加速,反之可加速。4.3 俄罗斯方块的设计与实现通过构造函数,定义随机产生方块种类以及对应填充色,可随机产生一个俄罗斯方块。对俄罗斯方块的位置用坐标表示,判断当一行满之后,消除这一行并相应的分数增加。4.4要点分析完成这个项目主要有几个问题要处理: 边界问题,即如何判断俄罗斯方块是否已经到达边界,主要是在左右移动和下降过程中,判断俄罗斯方块是否已经抵达边界,使其不超越边界。 接触问题,即如何判断俄罗斯方块已经与其他俄罗斯方块接触,此时应该停止方块的下落,或者避免方块间重合。 旋转问题,俄罗斯方块要旋转很简单,只要用转换公式即可,但问题是如何判断旋转后的位置是否不合法,即有没有可能触及边界,或者与其他俄罗斯方块重合。 消去问题,当网格中有一行填满了方块,需要消去此行,并将在其上的所有方块均向下移动一行,更新分数等相关信息。第 和第个问题类似,每个俄罗斯方块(tetrisblock)对象包含四个更小的块单元(blockunit), 在处理这两个问题的时候只要在块单元类当中添加判断块单元对象是否接触边界或者其他俄罗斯方块的块单元的方法,然后俄罗斯方块类的判断接触边界或其他俄罗斯方块的方法,只需依次调用该俄罗斯方块对象的所有块单元对象的判断方法,若其中一个块单元接触边界,则该俄罗斯方块接触边界。而边界和方块接触问题都可以大致分为两类,a. 接触两侧边界或在两侧接触其他俄罗斯方块,b. 接触网格底部边界或者方块接触其下的其他俄罗斯方块。这两类问题需要分开处理,因为方块的下落和左右移动是分开进行的,当方块左右移动时不能穿过两侧边界或与其他俄罗斯方块重合,当方块下落时,则不能穿过底部边界或穿过其下的俄罗斯方块。第个问题,先克隆一个下落的俄罗斯方块,对其进行旋转操作,然后判断其是否超越边界或者与其他俄罗斯方块重合,若其状态合法则将下落的俄罗斯方块进行旋转操作,否则结束操作并返回。第个问题,用一个数组标记每行块单元个数,并计算每行最多可填入多少个块单元,若某一行已经填满则,删除每个俄罗斯方块中在该行上的块单元,并且将在该行之上的块单元全部向下移动一行。五、设计总结通过这次俄罗斯方块课程设计,不能说对这门课学到了很多,而是对俄罗斯方块这个游戏加深了了解,通过它的设计过程,在代码部分我知道了它每一种功能实现的特点及怎样实现的,俄罗斯方块是一个很经典的游戏。首先我负责完成的部分是俄罗斯方块单元块的基本设计和控制,在完成过程中,出现了许多的问题,开始我不知道怎么去编写,上网查资料,资料很多,但是理解是个问题,最后我通过选择,开始了俄罗斯方块代码的分析,因为需要判断每一个单元块,所以需要构造函数,接着对单元块进行判断,首先是超界,这些代码是网上资料查到的,但是不懂意思,再同组人把网格画出之后,进行了理解,产生俄罗斯方块的时候,需要填充颜色,开始是每一种方块定义一个颜色,后又改成随机产生填充色,使方块下落时更美观,在俄罗斯方块下落时需进行一些判断,开始没想到需要对每一个单元块进行判断,后经验证修改完成。在俄罗斯方块一行满之后要进行消除并更新游戏区域,

温馨提示

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

评论

0/150

提交评论