毕业设计论文-俄罗斯方块游戏和设计(带源程序)_第1页
毕业设计论文-俄罗斯方块游戏和设计(带源程序)_第2页
毕业设计论文-俄罗斯方块游戏和设计(带源程序)_第3页
毕业设计论文-俄罗斯方块游戏和设计(带源程序)_第4页
毕业设计论文-俄罗斯方块游戏和设计(带源程序)_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

优秀设计需源代码。程序等全套设计联系QQ695132052第一章绪论11游戏的历史游戏开发至今已经有30多年,在这个短暂的时期里,随着硬件水平的提高,游戏开发新技术层出不穷,经典游戏比比皆是。111从头谈起真正的电子游戏机产生于20世纪70年代。1971年,麻省理工学院的学生NOLANBUSHNELL设计了世界上的第一个业务用游戏机(俗名街机),叫做电脑空间。这台游戏机用一台黑白电视机作为显示屏,用一个控制柄作为操纵器,不过由于市场因素这款游戏以失败告终。但是最后他在电子游戏的发展上取得了非凡的成就。上面介绍的是专用机游戏的历史,而最早的电脑游戏可以追溯到1972年,一个叫CROWTHER的工程师用当时最流行的主机DEC公司的PDP10编写一段简单的FORTRAN程序。在这个程序里,CROWTHER设计了一张地图,地图上不规则的分布着陷阱,游戏者必须寻找路径避开陷阱。这个程序被公认为是最早的电脑游戏程序。1989年,BRODERBUND公司的设计师乔丹麦克纳根据阿拉伯民族的古老传说一千零一夜在APPLE平台上制作了一部动作冒险相结合的电脑游戏波斯王子。这个游戏获得了第一作,它代表了当时电脑技术的最高水平。1986年,任天堂公司发售了一款真正的游戏巨作超级马里奥。20世纪80年代IBMPC兼容机的出现打破了APPLE公司的垄断地位。到了20世纪90年代,游戏业才真正成熟起来,成为了一种产业。由于PC机价格非常低而且硬件速度越来越快,游戏逐渐成为人们生活中不可缺少的一部分。游戏产业也逐渐发展成熟。112图形硬件的革命图形硬件的飞速发展是近些年来的事情,部分原因是来自工业方面的压力,例如在军事和医疗方面对于实时图形的需求很强烈,而交互娱乐产业也极大的推动了图形硬件的发展。技术上的因素同样也推动着图形硬件的发展,许多图形算法可以很容易地表达为并行方式,这样硬件执行的效率变得很高。摩乐定律也起了作用,越来越多的晶体管可以集成到一块单独的芯片上。在所谓的GPU(图形处理器)概念出现以前,特殊的图形硬件只出现在诸如SGI和EY2X进行旋转2程序运逻辑程序中逻辑运算通常只作数值的运算及分析,如方块移动时阻碍判断、方块满行判断、删除满行、方块移动、定时器、事件响应等。3绘图绘图会因为显示平的不同而有所不同,例如在单机与手机上的显示环境就不相同,或显示效果会有所不同,例如方块的样式作修正时,即可以产生出不同的显示效果。4显示平台“可移植性高”是JAVA的属性之一,JAVA的应用涉及许多领域,如手机、单机程序及浏览器等,不同的平台对于它的设定不尽相同,若将显示平台独立为一个类,将有助于主程序的完整性及移植程序的快速性。42注意事项游戏在设计时除了将程序切割成多个对象外,在游戏的逻辑运算上应尽可能做到弹性化。所谓弹性就是方块地图的长与宽应该可以用参数来改变。43游戏流程图按S键关开1游戏开始控制游戏开关2键盘控制台循环运行程序运行顶层图否是否是否是游戏开始接受按钮的控制信息1检查满行2删除满行3重新装载方块产生控制方块下降的执行信息移动方块显示方块于屏幕中,检查方块在屏幕上是否有阻碍发生方块移动时是否有阻碍方块是否无法下移游戏结束图1无效有效按键保持不动可动21检查按键22检查可移动性图2第五章详细设计51总体设计过关游戏结束重新游戏下一个图行达到提定位置达到提定位置显示屏幕信息按向上键游戏开始否按S键游戏开始按键7BEGIN10REACH12CHANGE9XIAN6GAMEINIT8SAVE5RUN11KEYDOWN13DESTROY1MAIN2INIT3STARTMAIN4PAINT程序流程图序号方法名作用1MAIN定义窗口2INIT创建变量3START打开线程4PAINT游戏界面初始化和游戏开始开关5RUN控制游戏速度6GAMEINIT游戏变量初始化7BEGIN装载图形8SAVE保存上一个图形的坐标9XIAN屏幕显示10REACH处理到达后的图形,进行加分,满行判断及消行处理等11KEYDOWN控制按键信息12CHANGE控制图形变化13DESTROY游戏结束52屏幕信息初始化(PAINT)调用GAMEINIT开启游戏,GAMEINIT是变量初始化,也是游戏的入口判断是否按下S键显示开启游戏的方法游戏开关控制图(在PANINT内实现)PAINT方法是绘制游戏地图的方法,先指明是什么颜色,再定义颜色范围,本游戏是先用红色画了一个大的实心矩形框,再在红色中画一个比红色小一点的黑色实心矩形框,这样黑色的框便会把原来红色的部分遮掉,让人看起来就是黑色的框周围围了一圈红色。黑色矩形框为后面的游戏方块活动的范围。该方法中还设置了一把锁,是游戏是否开始的锁,如果还没开始则会在黑色框中提示游戏开始的方法。如果游戏锁解开,会调用GAMEINIT方法。PAINT方法还可在前面加RE,即REPAINT,该方法可以将整个屏幕清屏,再重新画一个游戏界面。也由于如此,如果在方块向下运动中,每运动一行都要掉用一次REPAINT方法的话,屏幕便会闪烁的很快,这样就游戏的可观性来说很不好。所以我另外定义了一个制作图形变量GRAPHICSGG,这个变量只要被激活GGGETGRAPHICS,就可以拥有绘图的所有功能。同时也定义了另外一个绘图的方法XIAN,这样就减少重新绘图而造成的屏幕闪烁问题。有关XIAN方法的使用,将在后面的显示控制中提到。GAMEINIT方法是游戏初始化,用双重循环把定义游戏地图的二维数组SCREEN赋为FALSE,即清空游戏地图中的所有方块。也把每行方块数初始化,分数初始化,打开游戏地图清屏开关,再调用装载游戏方块BEGIN方法。53方块的装载BEGIN是否7654321随机抽取一个数随机数一字形Z字形反Z形7字形反7形倒T形田字型游戏是否结束保存当前方块坐标显示方块于屏幕上游戏结束调用DESTROY关数初始化返回开始界面方块装载(BEGIN方法)定义一个随机变量,然后调用随机函数(RANDINTMATHRANDOM71,所取得的随机数在1到7之间,用这7个数字表示7中常见的方块,并从7种方块中随机抽取图形。每一种方块都是由两个一维数组X,Y表示的,其中一个用来保存方块所在行,另一个数组用来保存方块所在列,这样有利于方块在屏幕上准确而有活动的定位。所有7种图形都是在三行三列的地图中研究后给出的坐标,给出的坐标也是方块在游戏地图中靠最顶行的坐标。这就好象方块存在于一个三行三列大小的图形中而够成的一张图片。图片的运动也就是方块的运动,这样,要实现方块的变形,就要在三行三列的图形中定义一个最左上角的基点,方块运动,基点也跟着运动。基点坐标在加载方块是加载,基点的存储空间在加载每个方块数组的最后定义。这样使得方块在游戏地图中的每一个地方都可以变形。也不会因为变形而方块在游戏地图中的变动很厉害,出现瞬移的现象。图形坐标装载完后,先判断在方块的下一行是否已有方块,如果有则说明方块以到达游戏地图的顶端,游戏将结束。没有则先把方块坐标保存,这是为了在方块向下移动的时候在它的后面不会有虚假的方块,因为方块向下运动,记录的是新一行的方块坐标,但旧一行的没有消掉,所以要先旧方块的坐标保存起来,搽掉旧方块再显示方块。这样也会减少屏幕的闪烁问题。54处理键盘事件上左右下是否判断是否是S键且游戏游戏还没开始按键等待开启游戏开关判断按键图形变化调用CHANGE方法1判断可移动性2可以则移动1判断可移动性2可以则移动1判断是否能再向下移2可以则向下移调用XIAN将发生变化后的方块显示在屏幕上用SAVE保存原有坐标键盘事件功能图(KEYDOWN)KEYDOWN是处理按键的事件,刚开始运行程序时,游戏还没有开始,这时除S键(解键盘锁的键)是有用外,其他的键都给锁住,这样可以避免键盘过早的控制游戏。在判断是否在S键的语句中还加了对游戏锁取反并判断是否为真的语句,两个语句同时成立时,才会解开游戏锁,程序开始时,游戏还没有开始,游戏锁是关的,但是取反后它就是真的,所以只要按下S键后,两个语句都成立。这样做是为了在游戏开始时再按下S键,游戏不会重新开始,即游戏开始后,S键就没有用了。按下S键后,游戏锁才被解开,键盘也被解开。每当有按键,也就是方块要产生变化时,先保存方块的坐标,便于清理旧方块,显示新方块。当方块要进行上(变形)、下、左、右变化时,先对方块将要移动到的位置进行判断,判断是否有障碍,有则保持原来的位置不变,没有则根据所按的键执行相关的操作。再把方块的位置显示在屏幕上。方块的移动其实也只是对行或列坐标的增减而己。例向左键的障碍物判断及处理FORI0I0/有消行,使屏幕方块向下移动FORI0I12ISCREENIJSCREENIJKROWJROWJKJ/向上推动一行59显示控制是否清除屏幕所有方块、成绩和关数,全部重新绘置,使得消行视觉化判断是否消行清除旧图形(方块在屏幕上前一点的位置)绘制新图形方块组成小方块是由三个不同颜色的正方形方框组成,其中正方形有实心的也有空心的,这样使得方块变得好看点能看出堆积的视觉效果每个图形是由四个小方块拼凑而成的。显示控制时先看之前是否发生过消行事件,如果发生了清除屏幕所有方块、成绩和关数,全部重新绘置,使得消行视觉化。然后再清除旧图形,绘制新图形。其实消除屏幕只是将屏幕重新画一次而己,清除成绩和关数,也只是在有显示成绩和关数的地方画一个白色的框而己。重新绘置新点,就是从下向上判断看哪些地方有方块的就得新画一个小方块,没有的不画。510保存方块坐标(SAVE)SAVE方法将活动方块的之前坐标保存,在方块移动后,它就起到清除旧图形的重要作用,就是如些使显示界面不用不断的刷新,然后再去绘制新图,这样可以使得屏幕不会变得太闪烁。511处理游戏结束DESTROY来处理游戏结束,关闭游戏开关关数初始化返回到开始界面调用REPAINT使屏幕初始化第六章体会在做毕业设计以前,我对JAVA游戏开发只是停留在理论知识的水平上,是“纸上谈兵”,缺乏实际的软件开发经验。这次通过做毕业设计,我完成了俄罗斯游戏的软件开发任务。在整个开发过程中遇到了很多问题,如方块的装载和变形、屏幕太闪烁的问题、满行判断及消行的处理。但最终都被我一一解决,对其中比较主要的几点体会总结如下。第一,为了熟悉俄罗斯方块的相关运作,我经常在玩街机和游戏机上的俄罗斯方块,慢慢去发现它所有的功能,然后再思考和查阅资料进行分析,经过逐步的设计与反复的修改论证,才完成了整个游戏的开发。第二,完成了从“小而全”,到“全而精”的转变。设计过程中,经常会遇到困难,我学会通过反复思考和测试,然后找出自己的错误并加以改正,再进行下一个步骤。这个程序就是在这样反复过程序中一点一点的完成的。完成之后再来优化整个程序。第三,作是一个不断学习新鲜事物的过程,从设计初的不懂到最后能够顺利完成,我体会到在实践中学习的重要性,这对于将来我走上工作岗位具有重要意义。第四,通过毕业设计使我对JAVA这门课程有了一定的了解,也对我今后的就业之路打下了一定的基础。经过一个月的不断努力,毕业设计内容已经基本上完成了。回顾这个设计过程,我学到了许多书本上没有学到的知识。通过这次自己制作的软件,丰富了自己的实践技能,扩展了本专业的知识面,使我受益非浅,同时也体验到了搞软件开发的困难度。在这次设计的同时,我又从中学到了许多东西。但由于我对这样的软件开发还只是一个开始,了解的不多,这其中或许还有很多的不足,有些模块做得不是很好,有些功能还不能够完全的实现,如不能把要装载的方块提前显示出来。因此做得不是很好,界面的设计及整体的布局还比较简单,没有突出特色出来,这也可能是我这个系统的不足之处,在这里也恳请各位老师能够对我的作品指明不足并加以改正。总的来说,我自认为还是比较成功的,这也是我在大学三年来完成的一个比较全

温馨提示

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

评论

0/150

提交评论