马里奥游戏设计报告_第1页
马里奥游戏设计报告_第2页
马里奥游戏设计报告_第3页
马里奥游戏设计报告_第4页
马里奥游戏设计报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

..综合课程设计报告

题目:马里奥游戏__xxxxxxxx__xxxxxxxxx__xxxxxxxxx指导xxxx完成日期:xx年xx月xx日设计内容程序面向对象设计:马里奥对象,敌人对象,障碍物对象,场景对象,窗体对象,图片以及音乐对象等等。欧阳茂:1游戏操作:玩家操作游戏方法2障碍物的开发:开发游戏中的障碍物3马里奥主角的开发:开发马里奥主角4马里奥与障碍物:开发马里奥遇到障碍物的不同状态5敌人的开发:不同敌人类的开发,包括三角怪,食人花6敌人与马里奥:马里奥遇到不同敌人的状态刘金凤:1美工设计:图片美化,游戏体验度2窗体类的设计:将游戏显示到界面3开发游戏场景:开发游戏的背景或者游戏环境4通关开发:马里奥通过当前进入下一个通关5其他:计分,生命,音乐,时间的设定二、设计目标开始游戏时,Mario会有3条生命,消灭敌人或顶一些物品可以得到分数,每到500分会增加一条生命,如果Mario被敌人杀死或是掉下悬崖,会失去一条生命,并从该版面重新开始游戏,如果Mario的生命数为0,则游戏结束,返回标题画面重新开始游戏。设计中的基本要求:1完成游戏人物的基本动作,上下左右,跳跃等2完成障碍物和敌人类的操作以及不同的设定3完成通关以及每一个关的障碍物和场景都不一样4完成游戏人物的声明和加分问题5完成游戏时间的设定,游戏的开始和结束设计中的更高要求:1游戏运行流畅,用户体验好2游戏尽量考虑内存资源合理利用3游戏画面美观,不同的通关难以程度不同4游戏能够具有足够的吸引力三、需求分析游戏行业火爆近十年,尤其是网络游戏的势头非常的猛,已经成为很多年轻人不可或缺的娱乐工具。据报告指出,游戏行业市场已经是我们最有活力的行业,互联网和宽带的普及也进一步的加快了游戏行业的发展。特别是20XX,随着4g的到来,相信游戏行业将进一步的加快发展。中国网络游戏打的增势不减,市场巨大:在中国,每年新增网民超过5000w,市场巨大。专家认为,网络游戏定位于大众化娱乐,收费低廉,内容丰富,有利于缓解人们因为工作学习紧张或者经济不景气造成的心理压力。另外,我们游戏行业上市的公司或者拟上市公司,资金充足。由此来看,游戏行业必然会在未来更加的突破。预计20XX的细分市场份额占比仍将保持在70%左右,但是由于端游市场处于高位滞涨状态,增速缓慢,并且还受到页游和移动端游快速发展所带来的冲击,今后端游市场份额将进一步被缩小。而随着游戏娱乐时间碎片化价值的不断提高,一些策略、益智、休闲类的轻游戏同样吸引了大量可支配游戏时间相对较少,但付费能力较强的上班族玩家的青睐,这也为网页游戏发展提供了强劲的增长动力,一些传统端游企业甚至其他互联网企业纷纷进入网页游戏市场。hSn中国行业咨询网_行业报告_行业分析_市场调研_第三方市场数据提供商hSn中国行业咨询网_行业报告_行业分析_市场调研_第三方市场数据提供商在移动游戏方面,由于行业进入门槛较低,移动游戏生命周期较短,这就为许多创业型中小企业快速壮大提供了广阔的前景和机遇。随着,移动端游戏质量品质的不断提高,移动端游戏市场的成长即将进入快速上升通道。未来,页游和端游的细分市场份额占比将逐年扩大。hSn中国行业咨询网_行业报告_行业分析_市场调研_第三方市场数据提供商hSn中国行业咨询网_行业报告_行业分析_市场调研_第三方市场数据提供商20XX第一季度中国移动游戏市场规模达到24.3亿元,环比增长率为9.3%;其中智能机移动游戏市场规模为7.9亿元,环比增长率为20.9%。在移动单机游戏方面,市场上主要还是以休闲类、棋牌类的游戏为主,游戏的画面质量在不断提高,未来将会有更多制作精良的单机大作出现;在移动网络游戏方面,《我叫MTOnline》、《大掌门》等卡牌类移动网络游戏受到市场高度关注,社交竞技元素吸引了大批用户,智能机移动网游在20XX可能迎来大爆发。hSn中国行业咨询网_行业报告_行业分析_市场调研_第三方市场数据提供商以下为统计数据:图1同类游戏下载量图2上半年销售额增长率图3游戏行业细分段图4游戏行业规模增长数据图5玩家群图6同类游戏下载量2四、设计思想4.1程序面向对象设计马里奥对象,敌人对象,障碍物对象,场景对象,窗体对象,图片以及音乐对象如下:图7完整马里奥图主要类:图8主要设计类主要完成功能:图9主要功能模块4.2窗体的设计窗体是马里奥游戏的主要界面,其设计主要包括主要界面的大小,及位置选择。标题,布局等界面属性方面的内容。其中窗体设计中有一个重要的静态属性的设计,即把游戏中的图片进行静态的初始化,其设计类为:〔MyFrame。将游戏中的主角:马里奥图片,场景以及背景图片,敌人食人花,敌人三角怪,障碍物,等需要的图片进行属性的保存,通过io流保存到集合中。以方便取出来,保存到类中<staticValue>。图10初始窗体图4.3开发游戏场景场景是马里奥游戏之中最难控制的一块内容,因为一个马里奥游戏里面有多个通关,而且每一次的通过,里面的敌人和障碍物等的位置都是不一样的。游戏设计越复杂,那么场景的控制就越难。本次场景的通过一个场景类〔background完成,设计主要包括:属性的设计:背景图片的设计,即每一个场景的背景图片int类型保存场景所在位置〔场景的顺序Boolean类型判断当前场景是否为最后一个场景,如果是最后一个场景,那么结束后游戏结束场景中的障碍物和敌人,使用两个集合来进行保存。一个集合保存已经消灭的敌人和障碍物,另一个集合保存未被消灭的敌人和障碍物行为的设计:将所有的属性进行初始化,包括背景图片,场景顺序,标志。〔构造方法中初始化敌人和障碍物根据游戏的状态〔是人物完全死亡,还是暂时死亡操作死亡集合或者生存集合〔新建立一个重置方法4.4障碍物的开发障碍物是游戏中的问号,砖块,绿色框部分,其为马里奥游戏中的重要组成部分包含的属性:1障碍物在场景中的坐标〔x,y2显示的图片3类型〔不同的障碍物初始类型〔即障碍物初始的状态,与遇到马里奥之后的状态相对行为方法:重置障碍物的方法〔即当马里奥死亡之后,但生命次数还未完全用完,那么当马里奥重生的时候,需要要将障碍物和敌人重置当障碍物遇到马里奥时,改变相应的图片初始化障碍物信息的构造方法4.5将障碍物添加到场景中去障碍物类〔obstruction中拥有障碍物的属性,而场景〔background中的障碍物和敌人,使用两个集合来进行保存。因此可以通过集合来保存各个障碍物在场景中的位置和状态。比如:添加一张北京图片到场景之中,将砖块,问号,绿皮按照障碍物的位置放到对应的位置中去。当然,场景类应该判断当前的场景是属于第一个场景还是其他场景,而初始化不同的障碍物位置。绘图类〔Maframe主要用于图像的显示,将场景中的一切障碍物绘制到界面上去。因此保留有一个场景〔background类的一个对象。通过这个对象通过paint方法绘制到窗口中去。其中:背景图片从坐标〔0,0开始绘制并充满整个屏幕,而其他障碍物通过取得北京中的坐标〔x,y来获得绘制的位置。如下图〔红色部分均为障碍物图11:障碍物添加到场景图4.6马里奥主角的开发马里奥主角的开发,实际上与障碍物的开发类似,也是创建一个对象〔mario作为操作马里奥的对象,而且马里奥与图片一样也有相应的一些属性和方法。最基本的有2属性:坐标<X,Y>移动速度〔xmove,ymove跳跃速度<jump,down>跳跃时间马里奥人物图片马里奥状态〔这个指马里奥处于向左,向右或者是跳跃状态马里奥移动速度的属性〔默认为0,当移动的时候改变速度马里奥生命次数分数3方法:移动〔向左,向右停止〔向左,向右跳跃〔在地面或者障碍物上面可以跳跃,否则不能跳跃4跳跃的马里奥状态处理:马里奥跳跃的时候分为两种情况,一种是点击跳跃键在空中,一种是离开障碍物掉落到空中。在这里考虑的因素很多,在跳跃的时候可以进行向左或者向右方向的控制,但是当已经在空中的时候却不能再进行控制跳跃问题了,并且在跳跃过程中还有相关的马里奥图片的切换。其他处理:马里奥是一个动态的角色,因此在他移动或者停止的时候,都应该有不同的状态,即有不同的图片与之对应。并且要区分是向左还是向右。图12马里奥状态图4.7将马里奥对象加入到窗体之中1和障碍物添加类似,将马里奥绘制到窗体之中,但是因为马里奥是动态的,因此需要添加两个线程,如下:2添加线程一:因为马里奥移动的时候可能是一直进行的,〔mario类必须实现一个线程专门为马里奥这个角色服务,一直改变马里奥的坐标。3添加线程二:马里奥角色的状态在一直改变,因此需要同步的刷新,即同步的改变马里奥在窗体中的图片。图13怪物与障碍物4.8将马里奥角色与障碍物进行设置1障碍物〔obstruction与马里奥〔mario的关系是,都是在场景之中的,因此要设置马里奥与障碍物之间的联系与冲突就必须使用场景来作为中间桥梁。因此,在马里奥〔mario对象之中创建一个场景属性,以便于操作场景中的障碍物与马里奥之间的关系。2横向阻挡:障碍物与马里奥之间的冲突和联系主要是使用坐标来进行设置,解释为:当马里奥处于哪个区域可以活动,处于哪个区域不可以活动。〔遇到障碍物和在边界时移动都会受到限制3纵向阻挡:在地面或者障碍物上面可以跳跃,否则不能跳跃。因此在纵向马里奥仍然有一个活动范围。4当马里奥越到障碍物的时候,障碍物响应状态的改变问题。比如:当从下往上撞到问号时,那么问号则变为铁块,而以这种方式撞到砖块的时候,砖块消失。这里也涉及到障碍物与马里奥活动范围的问题。4.9切换场景:当马里奥移动到屏幕的最右端,需要将当前场景,切换为下一个场景。绘制各个场景。当马里奥移动到最右端的时候,就立即进行场景的切换。4.10敌人的开发:1马里奥游戏中有各种不同的敌人,并且各种敌人的移动方式和移动范围都有不同,因此在定义敌人类的时候也需要一定的属性和方法,如下:2属性:坐标:<x,y>初始坐标:〔x,y类型:即敌人类型显示的图片:敌人类的图片移动方向:不同的敌人有不同的移动方向最大移动坐标:敌人的移动范围行为:重置方法:当重置场景的时候。〔就是对场景中的两种结合的删除,添加操作死亡:地人类被消灭线程:同马里奥一样,也需要实现一个单独的线程来实现敌人类的行为。但是与马里奥不同的是敌人的移动是在固定的位置进行的移动,不需要添加上下左右的行为,而是自动的进行的移动操作。图14马里奥与敌人4.11敌人放到场景之中:1将敌人类添加到对应的场景〔background之中,即将各种敌人放到〔background的敌人类集合之中。同时在〔mainframe中通过敌人类不同的坐标绘制图像。2与马里奥一样,敌人类也有自己的移动状态,因此需要根据敌人的行为进行图片的切换。并且在mframe中进行不断刷新,与敌人的移动速度一致。图15敌人三角怪图16敌人食人花4.12敌人与马里奥:敌人类与马里奥的关系就是一个相互攻击的关系。对于不同的敌人,马里奥也会有不同的状态。对于三角怪,当马里奥与三角怪横向碰撞的时候,马里奥必然会失去一条生命,但是当在纵向碰撞的时候敌人会死亡。而对于食人花,不管马里奥与食人花以怎样的形式碰撞都会失望。敌人与马里奥的判断,跟障碍物与马里奥判断类似。而不同的是敌人是移动的。因此通过〔mario类中的场景对象,可以对敌人的状态进行控制,判断敌人当前的与马里奥的相对情况。而做出不同的结果判断。4.13马里奥死亡的解释:马里奥的死亡可能是由于与三角怪横向碰撞,也可能是与食人花纵向碰撞,也可能是走进了地面的漏洞之中。4.14其他游戏相关:分数的属性是放在〔mario类中的,因此通过马里奥杀的敌人数和顶的问号或者砖块数进行分数的增加或者不变,跟着马里奥主角的变化而变化。而当马里奥死亡之后,分数需要重置。马里奥的声明次数只有三次,因此,可以通过马里奥的属性进行记录。当马里奥死亡一次之后,敌人和砖块都需要重置,分数也需要重置时间是由马里奥属性控制,一直跟着玛丽奥的开始,当声明结束一次的时候,重置。当一关花了太多的时间的时候,那么就结束或者当闯关完全就结束。而结束的时候仅仅设置一个标志。当到达这个标志的时候就结束后。图17分数时间生命图图18马里奥开始具体实现5.1马里奥类的具体实现马里奥主角的开发,实际上与障碍物的开发类似,也是创建一个对象〔mario作为操作马里奥的对象,而且马里奥与图片一样也有相应的一些属性和方法。publicclassMarioimplementsRunnable{privateintx=0;//移动坐标privateinty=490;privateintwidth=60;//马里奥占用范围privateintheight=60;privateBufferedImagenowImage=null;//马里奥图片集合privateintxmove=0;//移动速度privateintymove=0;privateStringstatus="right--standing";privatebooleaninLand=true;//是否着陆判断privateintmovingImg=0;//移动标志privateintupFlag=0;//是否在空中标志privateintairTime=0;//在空中时间privateThreadt=newThread<this>;//马里奥线程privatebooleanleftFlag=true;//向左移动标志privatebooleanrightFlag=true;//向右移动标志privateBackGroundbg=null;//当前场景privatebooleandeadFlag=false;//死亡标志privateintscore=0;//分数privateintlife=3;//生命privateintoldLifeFlag=0;//是否超时privatebooleanwinFlag=false;//是否胜利.................................................................}5.2马里奥移动代码马里奥是一个动态的角色,因此在他移动或者停止的时候,都应该有不同的状态,即有不同的图片与之对应。并且要区分是向左还是向右。下面是具体的移动代码。与以上的属性相对应publicvoidmoveLeft<>{//向左移动if<leftFlag>{xmove=-5;if<status.indexOf<"jumping">!=-1>{status="left--jumping"; }else{status="left--moving"; } } }publicvoidmoveRight<>{//向右移动if<rightFlag>{xmove=5;if<status.indexOf<"jumping">!=-1>{status="right--jumping"; }else{status="right--moving"; } } }publicvoidstopLeft<>{//向左停止xmove=0;if<status.indexOf<"jumping">!=-1>{status="left--jumping"; }else{status="left--standing"; }movingImg=1; }publicvoidstopRight<>{//向右停止xmove=0;if<status.indexOf<"jumping">!=-1>{status="right--jumping"; }else{status="right--standing"; }movingImg=1; }publicvoidjump<>{//跳跃if<status.indexOf<"jumping">==-1>{if<status.indexOf<"right">!=-1>{status="right--jumping"; }else{status="left--jumping"; }this.upFlag=1;this.inLand=false;ymove=-10; } }publicvoiddown<>{//向下移动if<status.indexOf<"right">!=-1>{status="right--jumping"; }else{status="left--jumping"; }this.upFlag=-1;ymove=10; }5.3场景类场景是马里奥游戏之中最难控制的一块内容,因为一个马里奥游戏里面有多个通关,而且每一次的通过,里面的敌人和障碍物等的位置都是不一样的。游戏设计越复杂,那么场景的控制就越难。publicclassBackGround{privateList<Obstruction>obs=null;//包含所有的障碍物privateBufferedImagenowImage=null;//包含当前场景privateList<Obstruction>removedObs=null;//移除的障碍物privateList<Enemy>removedEns=null;//移除的..............................}5.4障碍物类障碍物类〔obstruction中拥有障碍物的属性,而场景〔background中的障碍物和敌人,使用两个集合来进行保存。因此可以通过集合来保存各个障碍物在场景中的位置和状态。比如:添加一张北京图片到场景之中,将砖块,问号,绿皮按照障碍物的位置放到对应的位置中去。当然,场景类应该判断当前的场景是属于第一个场景还是其他场景,而初始化不同的障碍物位置。publicclassObstructionimplementsRunnable{//障碍物类privateintx=0;//坐标privateinty=0;privateinttype=0;//障碍物类型privateintstartX=0;//障碍物初始坐标privateintstartY=0;privateintstartType=0;//障碍物开始类型privateThreadt=newThread<this>;//障碍物线程privateBufferedImagebf=null;//所有的障碍物图片集合......................................}5.4敌人类敌人类与马里奥的关系就是一个相互攻击的关系。对于不同的敌人,马里奥也会有不同的状态。对于三角怪,当马里奥与三角怪横向碰撞的时候,马里奥必然会失去一条生命,但是当在纵向碰撞的时候敌人会死亡。而对于食人花,不管马里奥与食人花以怎样的形式碰撞都会失望。敌人与马里奥的判断,跟障碍物与马里奥判断类似。而不同的是敌人是移动的。因此通过〔mario类中的场景对象,可以对敌人的状态进行控制,判断敌人当前的与马里奥的相对情况。而做出不同的结果判断。publicclassEnemyimplementsRunnable{//敌人类privateintx;//敌人类坐标privateinty;privateintstartX;//敌人类初始坐标privateintstartY;privateintstartType;//敌人类类型privateintwidth;//敌人类占用范围privateintheight;privatebooleanmoveLeft=true;//向左移移动判断标志privateBufferedImagenowImage=null;//当前图片集合privateinttype=0;privateThreadt=newThread<this>;//当前线程privateintimageFlag=0;privateBackGroundbg=null;//场景对象privatebooleandeadFlag=false;//死亡标志privatebooleanmoveUp=true;//向上移动判断privateintuplimit=0;//向上移动限制privateintdownlimit=0;//向下移动限制privatebooleanstop=true;//是否停止标志privateintstopTime=0;//时间限制privatebooleantrutleFlag=false;//三角怪privatebooleanmovingFlag=false;//是否能够移动...............................}附录Backgournd://场景类的属性和方法ens:List<Enemy>flag:ObstructionnowImage:BufferedImageobs:List<Obstruction>position:intremovedEns:List<Enemy>removedObs:List<Obstruction>statusFlag:intBackGround<BufferedImage,int>bgRemove<>enemyStartMove<>getEns<>getFlag<>getNowImage<>getObs<>getPosition<>getRemovedEns<>getRemovedObs<>getStatusFlag<>initobs<>resetObs<>setEns<List<Enemy>>setNowImage<BufferedImage>setObs<List<Obstruction>>setPosition<int>setStatusFlag<int>stopGame<>Enemy://敌人类的属性和方法bg:BackGrounddeadFlag:booleandownlimit:intheight:intimageFlag:intmoveLeft:booleanmoveUp:booleanmovingFlag:booleannowImage:BufferedImagestartType:intstartX:intstartY:intstop:booleanstopTime:intt:ThreadtrutleFlag:booleantype:intuplimit:intwidth:intx:inty:intEnemy<int,int,int,BackGround>Enemy<int,int,int,BackGround,int,int>dead<>getDownlimit<>getHeight<>getNowImage<>getT<>getType<>getUplimit<>getWidth<>getX<>getY<>initEm<>isMovingFlag<>isTrutleFlag<>run<>setBg<BackGround>setDownlimit<int>setHeight<int>setMoveLeft<boolean>setMovingFlag<boolean>setNowImage<BufferedImage>setTrutleFlag<boolean>setType<int>setUplimit<int>setWidth<int>setX<int>setY<int>Mario类的属性及方法:airTime:intbg:BackGrounddeadFlag:booleanheight:intinLand:booleanleftFlag:booleanlife:intmovingImg:intnowImage:BufferedImageoldLifeFlag:intrightFlag:booleanscore:intstatus:Stringt:ThreadupFlag:intwidth:intwinFlag:booleanx:intxmove:inty:intymove:intMario<int,int>Mario<int,int,BackGround>Mario<int,int,int,int,int>checkAddLife<>down<>gameOver<>getBg<>getHeight<>getLife<>getNowImage<>getScore<>getStatus<>getT<>getUpFlag<>getWidth<>getX<>getY<>isDeadFlag<>isInLand<>isLeftFlag<>isRightFlag<>isWinFlag<>jump<>moveLe

温馨提示

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

评论

0/150

提交评论