Android俄罗斯方块课程设计报告

上传人:无*** 文档编号:89920680 上传时间:2022-05-13 格式:DOC 页数:14 大小:415KB
返回 下载 相关 举报
Android俄罗斯方块课程设计报告_第1页
第1页 / 共14页
Android俄罗斯方块课程设计报告_第2页
第2页 / 共14页
Android俄罗斯方块课程设计报告_第3页
第3页 / 共14页
点击查看更多>>
资源描述
.XX城建学院课程设计报告书专业:计算机科学与技术课程设计名称:Java高级应用题目:俄罗斯方块_设计者:同组人员:指导完成时间:2016年06月08.目录一、设计目的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.2方块及旋转变换需求分析本游戏共有7种类型的方块,而每种类型方块还可以通过旋转变换成4种不同形态的方块进行摆放。方块生成后可以将它们摆放在一个游戏显示运行的区域内,该区域可以看作是有许多个等面积小方格构成的区域,而这些区域的状态只有两种,被方块占据或空闲。因此,对于整个游戏区域的空间是占据或空闲,可以用一位数来标识,对于7种方块和它们旋转后的形态我们可以用不同的标识进行标记。对于旋转,游戏中所有方块都是按照顺时针旋转的规则进行的,而且在旋转过程中它们不会因为旋转而下降,总会保持在同一高度,但是在同一高度最多旋转三次,就会下降一格,任何下坠物经过一个旋转周期还会变回原型。2.3游戏运行需求分析游戏开始后会随机产生一个方块,显示在游戏区域,同时右上角也会随机产生一个新的方块,该方块为游戏区域下一个将要产生的方块,游戏区域不再随机生成方块。当游戏区域的方块下落到底后,新的方块再次进入游戏区域,如此循环,直到游戏结束,这就是游戏的正常工作。当用户进行一定的操作交互的时候,运行程序可以根据用户的操作指示对方块进行控制,而这些操作都是响应相关的按键而执行的。按游戏中定义的旋转键,此事件实现下坠方块旋转操作,方块并非任何情况都能旋转,如果旋转后与已摆放好的方块有冲突或超出边界时,均不能发生旋转。因此首先要判断是否有足够的空间进行旋转,然后决定是否旋转。按游戏左键,此事件实现下坠方块左移操作,首先要判断此方块是否能够发生左移,当越界或被其他摆放好的方块阻挡时,则不能左移。按游戏右键,此事件实现下坠方块右移操作。首先要判断此方块是否能够发生右移,当越界或被其他摆放好的方块阻挡时,则不能右移。2.4消行和分数统计需求分析当一个方块下落到游戏区域底部进行摆放后就要进行一次消行检测,检测是否有行被填满,检测时从刚摆放的方块最上面那一行开始往下检测,由于方块的形状限制可知每次最多只能消除四行,所以只需检测四行即可。检测到一行被填满时该行上面的方块整体下移一行,包括空洞,然后继续检测下一行,直到四行都被检测完。消行以后要统计游戏的积分,根据每次消除的行数t的不同而累加不同的积分,游戏积分通过公式score+=t*t*100来计算,消除一行得100分,消除两行得400分,消除三行得900分,消除四行得1600分。设置最高分数,当分数达到最高分数后,游戏等级增加,游戏速度数值会增加以及加快速度,游戏速度有一个最大值,当到达这个值时,游戏速度将不再加快。分数统计和消除行是连贯动作,在消除行后要对分数进行增加,同时页面更新,页面上的分数,等级,速度都会更新,游戏区域的方块也更新,有一行被消除,游戏继续。当方块落到底部的时候,通过条件判断,把方块摆放在屏幕底部并持续显示,当某行或者某几行被填满的时候,要把这几行消除,并且被消除的行数上方的方块整体下移。三、模块分析及设计3.1 总体设计思想俄罗斯方块游戏设计主要从9个方面进行构思。游戏主界面的设计。方块的设计。方块的旋转。方块的运动情况包括向左、向右方块的自动消行功能。游戏速度的调节。游戏积分的计算。游戏开始菜单的设计。游戏结束界面的设计。3.2功能模块开始和退出游戏模块首先开始和退出游戏按钮出现在进入游戏界面和游戏界面,需要在xml下加入Button按钮,当点击按钮时跳转到目标界面或者开始游戏。例如点击进入游戏的开始按钮,会进入游戏界面,游戏界面也可点击开始按钮才能开始游戏,游戏开始后可以点击退出按钮,终止当前游戏,返回到进入游戏界面,或者当方块满时,游戏自动结束,退出游戏界面。图3.1 图3.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. 接触网格底部边界或者方块接触其下的其他俄罗斯方块。这两类问题需要分开处理,因为方块的下落和左右移动是分开进行的,当方块左右移动时不能穿过两侧边界或与其他俄罗斯方块重合,当方块下落时,则不能穿过底部边界或穿过其下的俄罗斯方块。第个问题,先克隆一个下落的俄罗斯方块,对其进行旋转操作,然后判断其是否超越边界或者与其他俄罗斯方块重合,若其状态合法则将下落的俄罗斯方块进行旋转操作,否则结束操作并返回。第个问题,用一个数组标记每行块单元个数,并计算每行最多可填入多少个块单元,若某一行已经填满则,删除每个俄罗斯方块中在该行上的块单元,并且将在该行之上的块单元全部向下移动一行。五、设计总结通过这次俄罗斯方块课程设计,不能说对这门课学到了很多,而是对俄罗斯方块这个游戏加深了了解,通过它的设计过程,在代码部分我知道了它每一种功能实现的特点及怎样实现的,俄罗斯方块是一个很经典的游戏。首先我负责完成的部分是俄罗斯方块单元块的基本设计和控制,在完成过程中,出现了许多的问题,开始我不知道怎么去编写,上网查资料,资料很多,但是理解是个问题,最后我通过选择,开始了俄罗斯方块代码的分析,因为需要判断每一个单元块,所以需要构造函数,接着对单元块进行判断,首先是超界,这些代码是网上资料查到的,但是不懂意思,再同组人把网格画出之后,进行了理解,产生俄罗斯方块的时候,需要填充颜色,开始是每一种方块定义一个颜色,后又改成随机产生填充色,使方块下落时更美观,在俄罗斯方块下落时需进行一些判断,开始没想到需要对每一个单元块进行判断,后经验证修改完成。在俄罗斯方块一行满之后要进行消除并更新游戏区域,分数增加,但是当游戏结束时,方块已经到达顶部,但是还会产生方块覆盖上一个方块。课下需要更改存在的问题,尽量完美。以后需要多了解JAVA语言和对一些函数的定义。六、参考资料1王英强,陈绥阳,张文胜等.Android应用程序设计M.北京:清华大学出版社,20152吴亚峰,索伊娜.Android核心技术与实例详解M.北京:电子出版社,20103黄晓东.Java课程设计案例精编M.中国水利水出版社,20094贾振华.Java语言程序设计第二版M.北京:中国水利水电出版社,20095朱福喜.Java程序设计技巧与开发实例M.北京:人民邮电出版社,2004.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!