第8章-游戏实战-—-决战之巅-课件

上传人:仙*** 文档编号:241647780 上传时间:2024-07-12 格式:PPT 页数:36 大小:1.27MB
返回 下载 相关 举报
第8章-游戏实战-—-决战之巅-课件_第1页
第1页 / 共36页
第8章-游戏实战-—-决战之巅-课件_第2页
第2页 / 共36页
第8章-游戏实战-—-决战之巅-课件_第3页
第3页 / 共36页
点击查看更多>>
资源描述
第第8 8章章 游戏实战游戏实战 决战之巅决战之巅能力目标能策划一款简单的游戏;合理设计游戏内容和游戏参数;根据设计的游戏内容,熟练绘制游戏主流程图;根据三层架构,合理确定类结构;能熟练地利用J2ME实现各个功能类;具有策划、实现一款简单手机游戏的综合能力。认知目标 了解游戏策划案的框架内容及书写格式;了解利用三层架构设计手机游戏的优点;了解表现层、逻辑层和数据持久层的功能分配。8.1 学习情景描述 之前,我们完成的工作都仅仅是一款手机游戏中的某个环节或一个个功能片段,本章将把这些环节和功能片段贯穿起来,完成一款战斗类型的手机游戏。实现从游戏策划到游戏的架构,然后进行功能实现的完整过程。本章的主要任务:通过剖析一款完整的手机游戏,学会如何策划手机游戏,实现从策划过渡到游戏的架构,根据游戏的功能来确定类,最后实现各个功能类。并能据此开拓思路,举一反三,设计出不同类型的手机游戏。8.2 游戏策划 8.2.1 任务一:策划游戏的定位和故事背景 此款游戏是以现代战争为故事背景制作的飞行设计类游戏。游戏类似于雷电1944,但又区别于雷电1944,我们追求更高质量的游戏画面和游戏的可玩性。在游戏平衡性上也力求能超越前者。让玩家能更深切的感受到战争的氛围与飞行的刺激!8.2.2 任务二:设计游戏内容 这是一款过关游戏,一共分三关。在第一、第二关中把最后的BOSS消灭后,即进入下一关。在第三关中把BOSS消灭后,游戏胜利。主角战机一共有三条命,在游戏过程中,如果三条命全部牺牲,则游戏失败。开始游戏 游戏运行后,首先出现Logo,然后是动态出现的菜单。根据对游戏菜单项的选择,进入相应的游戏环节。如果选择“开始游戏”菜单命令,则出现游戏的“开始界面”,在此界面中有三款不同类型的战机可供选择。选择战机后,即进入游戏。Logo菜单开始游戏音乐 开游戏帮助关 于退出游戏开始界面(选择战机)帮助界面关于界面返回返回返回游戏中返回进入游戏 在游戏过程中,随着背景地图的滚动,会出现四种不同类型的敌机(NPC),它们的出现方式、排列方式以及运行轨迹都不相同,它们会向主角战机发射子弹进行攻击。在地图中还会出现多个部署好的炮台,每个炮台有个八个发射管,朝八个方向向主角战机发射子弹。当地图滚动到最后,出现BOSS,BOSS则会以更强大的攻势对主角战机发起最后的攻击。主角战机会连续不断地发射子弹,NPC或炮台被击中爆炸后,会随机掉落五种道具中的某一种。主角战机和道具碰撞后,可以分别增加生命值、变换子弹类型以及增加累积物品的数量,当累积物品的数量达到30后,即可“发大招”,此时屏幕上的所有敌机(NPC)和炮台全部被消灭。当最后的BOSS被消灭后,则进入下一关,或游戏胜利。8.2.3 任务三:设定游戏参数 8.3 游戏架构 8.3.1 任务五:设计游戏的总体架构和主流程图l表现层:主要实现游戏界面的绘制功能。通过指定的接口实现与逻辑层的通信。l逻辑层:主要实现游戏对象的动作、碰撞检测等等逻辑功能。l数据持久层:保存游戏中的数据,载入游戏中需要的资源。该层与逻辑层无关。采用以上三层架构的优点:使得程序结构清晰,方便调试,并使程序具有良好的可扩展性,以应对需求的变化。表现层(绘制屏幕)逻辑层(实现逻辑功能)数据持久层(存储数据)启 动闪屏菜单关于游戏游戏帮助开始新游戏(选择战机)游戏进行中过 关失 败胜 利续费?交费?音乐 开退出游戏是是否否进 入 下 一关继续重玩返回返回结 束退出暂停通常情况下,从三个层面去考虑:表现层、逻辑层和数据持久层。8.3.2 任务六:确定游戏的类结构游戏一共设计了8个类:1.Plane_MIDlet.java:该类继承自MIDlet类,是游戏的主类。游戏从该类开始运行,也是在该类中结束运行。2.Map1.java:用于第一关地图场景的设计和铺设。3.Map2.java:用于第二关地图场景的设计和铺设。4.Map3.java:用于第三关地图场景的设计和铺设。5.SMSUtil.java:该类主要完成和信息台的通讯,以发送短消息的形式,实现游戏的收费功能。6.Start_Canvas.java:该类继承自Canvas类。主要实现游戏主体之外的各项功能,包括:绘制闪屏制作菜单从菜单进入到游戏各界面制作帮助界面制作关于界面制作游戏开始界面并完成对战机的选择绘制游戏收费界面7.Plane_GameCanvas.java:该类继承自GameCanvas类。主要实现屏幕的绘制,同时把表现层和数据存储层内容综合在了一起。实现的主要功能如下:图片资源的加载主角子弹的创建、移动和绘制(包括初始子弹、散弹、导弹和月牙儿激光)NPC1、2、3子弹的创建和移动(NPC4不发射子弹)炮台子弹的创建、移动和绘制五种道具的创建、移动和绘制设置四种NPC的出现位置,NPC的移动,以及炮台的创建BOSS的移动绘制发大招儿界面滚屏的实现主角生命的处理来电接听、挂断暂停8.PlaneClass.java:该类继承自Sprite类,属于逻辑层。主要实现以下功能:控制四种NPC的运行轨迹在地图中定位炮台出现的位置并创建它们根据生成的随机数确定生成何种道具完成各种游戏对象之间的碰撞检测及处理实现爆炸效果BOSS的定位、移动及子弹的发射发大招儿后清除屏幕上的所有敌人来电接听、挂断暂停8.4 游戏界面的设计和实现8.4.1 任务七:设计地图场景并实现滚屏 地图一共设计了130行。在Map1.java类的自定义静态方法map1()中,并不是把130行地图场景一次铺设完毕,而是根据场景实时滚动的坐标,确定行数,实现地图场景的动态铺设。因为地图图块的大小是3030,而屏幕大小是240320,因此每次铺设的行、列数为128。场景刚开始滚动时,实参rows的值为129。在Plane_GameCanvas类的scrollScreen()方法中进行rows值的计算、更新。然后,在Plane_GameCanvas类的paint()方法中,首先调用scrollScreen()方法,以获得当前最新的rows值,然后再调用Map1.java类的静态方法map1(),从而实现滚屏的绘制过程。8.4.2 任务八:设计游戏的主菜单 主菜单的出现是一个动态的过程。首先是一个百叶窗效果,出现菜单界面的背景图片;然后各个主菜单项从屏幕顶端依次掉落到屏幕底部;最后在屏幕的顶端出现游戏标题,先是分裂成两半的样式,然后再合拢。整个主菜单的生成过程非常具有动感效果。掉落过程中的菜单 完整的菜单界面 闪屏Logo 8.4.3 任务九:设计游戏的起始界面当“开始游戏”后,进入游戏的起始界面。在该界面中,单击箭头键,可以选择战机。不同的战机,其生命值和攻击力有所不同。玩家可以根据界面中的提示信息,作出选择。8.4.4 任务十:设计游戏的交费和续费界面并实现收费功能在本游戏中,设计了以下几个收费点:(1)如果选择第一种战机,那么第一关是免费的,从第二关开始收费。(2)如果选择第二、第三种战机,那么从第一关开始就需要收费。过关不再收费。(3)交费后,如果在游戏过程中失败了,则显示续费界面,续费后可以继续游戏。续费不限次数。游戏的交费过程是以短信的形式展开的。如果在交费和续费的提示界面中,按下“购买”和“是”,就会向事先设置好的收费平台发送一条短信。平台收到短信后,就从手机话费中扣除费用。这也是手机游戏常见的盈利模式之一。图8-28 交费提示界面图8-29 续费提示界面8.5 游戏对象的创建、移动和绘制8.5.1 任务十一:创建、移动和绘制主角战机 主角战机有三款,根据用户在起始界面中选择的战机类型,来确定需要创建的战斗机型图片,然后再生成主角战机的精灵对象。8.5.2 任务十二:创建、移动和绘制主角战机的子弹 主角战机的子弹分为四种:初始子弹、散弹、导弹和月牙儿激光。其中,散弹由初始子弹构成,分成左、中、右三列同时发射。每颗子弹有两个属性:x坐标位置和y坐标位置,用一个数组来表示。每种主角子弹再分别用一个向量(Vector)来装载。8.5.3 任务十三:创建、移动和绘制NPC NPC有四种,分别有不同的队列和运行轨迹。其中,NPC1每次出现五个,斜线排列,从上往下运动。NPC2每次出现四个,水平直线排列,从下往上运动。NPC3每次出现六个,两边垂直排列,一边三个,垂直向下运动,到屏幕中间再交叉斜向下。NPC4每次出现六个,水平排列,从左往右横穿屏幕。8.5.4 任务十四:创建、移动和绘制NPC子弹 NPC的子弹只有一种,并且设计NPC4是不发射子弹的。NPC1、NPC2和NPC3子弹的创建和移动方法类似。其绘制过程也是首先加入图层管理系统,然后在绘制图层时一并绘制。8.5.5 任务十五:创建、移动和绘制炮台及其子弹 炮台的创建和NPC类似,其出现的位置也是事先设定好的,当地图场景滚动到某个设定位置时,即出现事先部署好的炮台。设定每一关出现15个炮台。炮台默认在地图中是可见的,当被主角子弹打爆炸后,则消失不可见。8.5.6 任务十六:创建、移动和绘制随机掉落的道具 当NPC和炮台被主角子弹打爆炸后,会在屏幕上出现一个道具。道具一共有五种,出现的几率可以参考表8-3。根据设定的几率,生成某种道具的方法在PlaneClass.java类中实现 8.6 游戏运行的逻辑设计和实现要点提示 8.6.1 任务十七:游戏对象间的碰撞处理 在游戏中存在很多的碰撞。比如:主角子弹和四种NPC、炮台、BOSS的碰撞,主角和NPC的碰撞,NPC子弹、炮台子弹、BOSS子弹和主角的碰撞等等。因此游戏中对象间的碰撞处理是一项比较烦琐的任务。基本的实现思路是:首先,自定义四个碰撞检测方法isCollidesWithPlane()、npcBulletCollidesWithPlane()、planeBulletCollidesWithEnemy()、planeBulletCollidesWithBoss1(),用于特定游戏对象间的碰撞处理,然后,在collisionHandle()方法中对上述四个碰撞检测方法进行调用,实现对游戏对象间碰撞的统一处理。8.6.2 任务十八:爆炸处理当主角子弹打中NPC或炮台后,在NPC和炮台爆炸前,会先显示一个火花闪烁的效果,然后再显示爆炸效果。8.6.3 任务十九:“发大招”处理 当累积(B)道具的数量达到30以后,按下“发射”键,可以“发大招”,即清除屏幕上所有的NPC和炮台,并产生相应的道具。首先,在Plane_GameCanvas.java类的响应键盘方法gameKeyInput()中,判断如果按下“发射”键,且B道具数量大于等于30,则设置isDazhao变量值为true。然 后,在 Plane_GameCanvas.java类 的 paint()方 法 中,判 断isDazhao变量的值,如果为true,则调用绘制“发大招”的方法drawDazhao()。第三,“发大招”后,需要清除屏幕上除BOSS以外的所有敌人。因此在PlaneClass.java类中首先定义一个清除某一类敌人的clearEnemy()方法,然后再定义一个清屏的clearScreen()方法,在该方法中,调用clearEnemy()方法逐一清除各个NPC和炮台。8.6.4 任务二十:BOSS1相关处理BOSS1()方法实现与BOOS1相关的一些处理。包括:设定BOSS1子弹的初始位置、BOSS1子弹的发射、BOSS1子弹与主角飞机的碰撞检测和BOSS1爆炸。BOSS1的移动也设置了跟踪主角的判断,根据主角的位置来决定是向左移动还是向右移动。8.6.5 任务二十一:主角生命相关处理主角一共有三条命,在Plane_GameCanvas.java类中定义了一个ming()方法,分四种情况讨论并实现与主角生命相关的一些处理。1.过关,等主角移出屏幕后,显示胜利画面;2.当前战机生命值耗尽,但还有备用战机;3.消失时间一过,重新开始下一架战机;4.当前战机生命值耗尽,且已没有备用战机,则显示失败和续费界面。本章小结 1/2本章综合运用前面各章节的知识、目标和任务,将游戏开发的各个环节串联起来,以现代战争为故事背景,策划、设计并实现了一款飞行设计类游戏。1.游戏策划主要体现以下内容:(1)游戏的定位和故事背景;(2)设计游戏内容;(3)设定游戏参数;(4)开发需求设定,包括:美工需求、音效需求、开发团队所负责的成员;(5)预计开发进度;(6)用户分析;(7)市场前景分析;。本章小结 2/22.通常情况下,从三个层面去考虑游戏的总体架构,从而划分并确定出各个功能类:(1)表现层:主要实现游戏界面的绘制功能。通过指定的接口实现与逻辑层的通信。(2)逻辑层:主要实现游戏对象的动作、碰撞检测等等逻辑功能。(3)数据持久层:保存游戏中的数据,载入游戏中需要的资源。该层与逻辑层无关。采用三层架构的优点:使得程序结构清晰,方便调试,并使程序具有良好的可扩展性,以应对需求的变化。3.综合利用J2ME实现各个功能类,提高游戏设计的技巧。课后实训1/2“决战之巅”是一款过关游戏,一共分为三关。在前面的任务中,只完成了第一关。请在此基础上,完成以下任务,完善游戏功能。1.参考图8-4和图8-5所示的地图图块和部分地图场景效果图,请在地图编辑器中设计第二关和第三关的地图场景。要求设计的地图场景为8列130行,并导出形成一个二维数组。然后在工程中新建Map2.java和Map3.java类,仿照Map1.java类,编写代码,实现他们的功能。2.参考表8-1、表8-2,请自行设计第二关和第三关各游戏对象的生命值(HP值)参数表,及主角战机和敌人(包括:四种NPC、炮台和BOSS)的攻击力参数表。然后在PlaneClass类中自定义reset()方法,实现过关重置功能。课后实训 2/23.修改PlaneClass类的BOSS1()方法,当BOSS1的生命值小于等于0时,实现BOSS1爆炸,并进行过关处理,使游戏进入第二关。然后,仿照BOSS1()方法,添加BOSS2()和BOSS3()方法,实现与BOSS2和BOSS3相关的处理。当BOSS3生命值小于等于0时,游戏胜利。4.自行设计BOSS2和BOSS3的移动方式。在Plane_GameCanvas类中,仿照moveBoss1()方法,添加moveBoss2()和moveBoss3()方法,实现BOSS2和BOSS3的移动。5.5.在Plane_GameCanvas类的paint()方法中,在第一关的绘制后面,添加第二关和第三关的绘制内容。谢谢你的阅读v知识就是财富v丰富你的人生
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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