设为首页 收藏本站
查看: 1010|回复: 0

Windows Phone 7范例游戏Platformer实战2——游戏设计初步

[复制链接]

尚未签到

发表于 2015-5-11 09:37:48 | 显示全部楼层 |阅读模式
  Platformer和“马里奥”的非常类似,玩法基本上差不多,只是游戏目前很多功能暂未实现。Platformer的主要目前就是要控制英雄躲开游戏中的所有僵尸怪,我们要在这些僵尸的干扰下用最短的时间收集宝石。每个关卡所花费的时间越短、收集的宝石越多,那么你在游戏中的成绩越高。唯一遗憾的是Platformer没有美女等待我们的拯救,但是无所谓,我们可以在后续开发过程中DIY一个。
  
  Platformer听起来似乎简单的不能再简单,但是所谓金字塔不是一天建成的。Platformer麻雀虽小,但是五脏俱全。因为我们在游戏开发中的大部分技能都在这个游戏中得到了体现,动画处理、声音加载、触控、键盘的输入、碰撞检测、游戏地图解析等是应有尽有。
  
  Platformer的主要特性这里归纳如下:

  • 支持Windows Phone 7、XBOX 360、PC的跨平台,游戏无需任何的代码修改就可以无缝在三者间运行。
  • 支持键盘、游戏摇杆控制游戏主角的移动和跳动,此外在Windows Phone 7平台上则是使用加速度传感器和触摸屏来控制主角的移动和“上蹦下跳”。
  • 实现了下降和跳跃、动态碰撞等几种简单的场景模型,初步实现了真正场景的防真。
  • 实现了对音频、动画图片、地图资源的加载和解析
  • 实现了高分辨率和低分辨的自动转换,游戏画面可以适应不同屏幕大小的设备。
  目前微软给这款游戏添加了不少伏笔,只待各位进一步挖掘和完善。轩辕就发现在Platformer中僵尸怪也不是无敌金身,只要额外添加一些代码,英雄就可以在收集到一定量的宝石后即可启动无敌变身状态,真可谓是“遇佛杀佛,见鬼收鬼”。至于更变态的实现还是期待各位读者自己丰衣足食,这里就不复读机了。
  
  Platformer游戏由十数个类组成。各个功能类之间没有牵涉到继承等关系,因此可以说每个类都具备自己独立的功能。轩辕会在后续的开发中对代码进一步完善,使游戏的扩展性更强,比如说场景滚动效果就会在后续课程中完成。下面是Platformer的对象解析图:
  
DSC0000.jpg
  
  
  现在对Platformer中的13个类的中心思想分别概述下:
  
  1:PlatformerGame类,它是整个游戏的控制中心,除了告知游戏中所有的对象什么时候响应和显示外,还负责内容管道和关卡的加载,以及游戏中各种对象的更新。可谓是劳苦功高
  2:Level类 ,它是游戏的关卡类。每个关卡对象包含了一个用于存放场景瓷砖信息的多维数组,英雄、游戏开始和结束位置的坐标、总分数、游戏剩余时间、一系列宝石和僵尸怪的信息。
  3:Player类用于实现英雄的加载、绘制和更新操作。
  4:Enemy类,负责僵尸怪的加载、绘制和更新操作。
  5:Gem类在游戏中实现一个悬浮在空中的宝石,不同类型的宝石所含的分值也不相同。英雄的主要任务就是收集这些宝石。有关宝石的加载、绘制和更新也由Gem类负责。
  6:Tile 结构。Tile如同我们现实中的瓷砖一样,我们可以在每个Tile中包含一个游戏元素,这样就可以拼接成我们期望的游戏场景。在Platformer游戏中我们用这些Tile构成形成关卡的场景图。
  7:Animation类,望文生义,当然是游戏候中不可或缺的动画类,它主要是解析游戏中包含的众多Sprites(精灵)图片,以实现动画的帧分解。
  8: AnimationPlayer类实现了将Animation类定义的精灵图片中的每一帧形成连贯的动画。
  9:Circle类专门只用于Gem类的,它定义了一个包围Gem的圆,以实现主角和宝石的碰撞检测。
  10:RectangleExtension累是Rectangle的一个扩展静态类,同样由于碰撞检测。
  11:Program是所有XNA项目的启动类,也是程序的入口。
  12:TouchCollectionExtensions类是针对WP7的触摸屏输入而实现的一个扩展类,以检测触摸屏是否存在触点。
  13:Accelerometer类对WP7中的加速度传感器做了封装,左右倾斜手机可以实现主角向左或向右的移动。
  
  游戏执行流程:
  在还未开始编程之前,先来概要说明下游戏的执行流程。
  
  1 在开始一个新关卡时,将加载该关卡需要的所有资源,这一切可以由PlatformerGame.LoadContent 和 PlatformerGame.LoadNextLevel这两个方法实现。
  
  2 每次游戏的状态更新过程都由PlatformerGame.Update 和 Level.Update两个方法实现。如果英雄已经死亡,或者关卡时间耗尽,那么任何输入都将无视,游戏处于一个暂停状态。如果玩家到达出口,剩余的时间将转化为该关卡的成绩加成。如果时间还有剩余,并且英雄没有到达出口的话,那么时间将逐渐减少,关卡场景中的各种对象(英雄、僵尸怪、宝石)将使用Update方法进行更新操作。各种状态都需要在编程之前考虑好,这样在以后的实现中才不至于将项目推到重来。
  
  3 游戏整体画面由PlatformerGame.Draw方法进行绘制,事实上,真正的绘制过程被细分,场景中的每个对象都按照自己的进度实现绘制。比如说,PlatformerGame.Draw被细分为Level.Draw 和 PlatformerGame.DrawHud两个方法。Level.Draw只是负责场景中Tile瓷片的绘制,英雄、僵尸怪、宝石本身是包含了一个Draw绘制方法的。总而言之,PlatformerGame.Draw只是起到调度和总控的作用,下面则一级级地听从调度,以完成“领导”安排的的工作。可谓是“牵一发而动全身”。

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-65711-1-1.html 上篇帖子: Windows Phone 7 Jump Start 下篇帖子: 解决windows phone 7 toolkit中Expanderview点击未展开的可展开列表项题目下边缘空白出现响应的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表