惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Vercel News
Vercel News
博客园_首页
Y
Y Combinator Blog
美团技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
阮一峰的网络日志
阮一峰的网络日志
aimingoo的专栏
aimingoo的专栏
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MyScale Blog
MyScale Blog
GbyAI
GbyAI
人人都是产品经理
人人都是产品经理
T
Tailwind CSS Blog
MongoDB | Blog
MongoDB | Blog
D
DataBreaches.Net
博客园 - Franky
Engineering at Meta
Engineering at Meta
量子位
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
酷 壳 – CoolShell
酷 壳 – CoolShell
N
Netflix TechBlog - Medium

博客园 - 軒轅

Windows Phone 7 Silverlight程序中声音播放实现 “Windows Phone 7 Game Development”一书可提供下载 Windows Phone 7范例游戏Platformer实战9——僵尸怪 Windows Phone 7框架、控件和开源项目第二季 经典Windows Phone 7开源程序介绍——基于定位的社交应用Foursquare Windows Phone 7 系统信息获取示例 Windows Phone 7 开发向导 V2.0提供下载 Windows Phone 7框架、控件和开源项目第一季 Windows Phone 7范例游戏Platformer实战8——精灵动画的绘制实现 WP7上Metro风格的程序栏图标汇总 Windows Phone 7范例游戏Platformer实战7——简单动画的绘制实现原理 两本全彩Windows Phone 7书籍提供下载 Windows Phone 7 开发资源大全 Windows Phone 7范例游戏Platformer实战6——加速度传感器解读 Windows Phone 7范例游戏Platformer实战5——多点触控编程 Windows Phone 7范例游戏Platformer实战4——冲突检测的实现 Windows Phone 7范例游戏Platformer实战3——游戏资源和内容管道 Windows Phone 7范例游戏Platformer实战1——5大平台支持 WP7版社交程序现真容,与Bing Map的完美结合。
Windows Phone 7范例游戏Platformer实战2——游戏设计初步
軒轅 · 2010-12-08 · via 博客园 - 軒轅

Platformer和“马里奥”的非常类似,玩法基本上差不多,只是游戏目前很多功能暂未实现。Platformer的主要目前就是要控制英雄躲开游戏中的所有僵尸怪,我们要在这些僵尸的干扰下用最短的时间收集宝石。每个关卡所花费的时间越短、收集的宝石越多,那么你在游戏中的成绩越高。唯一遗憾的是Platformer没有美女等待我们的拯救,但是无所谓,我们可以在后续开发过程中DIY一个。

Platformer听起来似乎简单的不能再简单,但是所谓金字塔不是一天建成的。Platformer麻雀虽小,但是五脏俱全。因为我们在游戏开发中的大部分技能都在这个游戏中得到了体现,动画处理、声音加载、触控、键盘的输入、碰撞检测、游戏地图解析等是应有尽有。

Platformer的主要特性这里归纳如下:

  1. 支持Windows Phone 7、XBOX 360、PC的跨平台,游戏无需任何的代码修改就可以无缝在三者间运行。
  2. 支持键盘、游戏摇杆控制游戏主角的移动和跳动,此外在Windows Phone 7平台上则是使用加速度传感器和触摸屏来控制主角的移动和“上蹦下跳”。
  3. 实现了下降和跳跃、动态碰撞等几种简单的场景模型,初步实现了真正场景的防真。
  4. 实现了对音频、动画图片、地图资源的加载和解析
  5. 实现了高分辨率和低分辨的自动转换,游戏画面可以适应不同屏幕大小的设备。

目前微软给这款游戏添加了不少伏笔,只待各位进一步挖掘和完善。轩辕就发现在Platformer中僵尸怪也不是无敌金身,只要额外添加一些代码,英雄就可以在收集到一定量的宝石后即可启动无敌变身状态,真可谓是“遇佛杀佛,见鬼收鬼”。至于更变态的实现还是期待各位读者自己丰衣足食,这里就不复读机了。

Platformer游戏由十数个类组成。各个功能类之间没有牵涉到继承等关系,因此可以说每个类都具备自己独立的功能。轩辕会在后续的开发中对代码进一步完善,使游戏的扩展性更强,比如说场景滚动效果就会在后续课程中完成。下面是Platformer的对象解析图:

现在对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只是起到调度和总控的作用,下面则一级级地听从调度,以完成“领导”安排的的工作。可谓是“牵一发而动全身”。