xna飞车游戏代码分析

xna飞车游戏代码分析

ID:19254802

大小:444.50 KB

页数:139页

时间:2018-09-27

xna飞车游戏代码分析_第1页
xna飞车游戏代码分析_第2页
xna飞车游戏代码分析_第3页
xna飞车游戏代码分析_第4页
xna飞车游戏代码分析_第5页
资源描述:

《xna飞车游戏代码分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、XNA飞车游戏代码分析Bywufei_spring如需转载,请注明作者以及来自中国XNA开发网。飞车游戏简介:XNA框架的推出确实能让游戏编写爱好者激动不已。而诸如Benjamin所写的飞车之类的示例游戏,则向大家展现了XNA框架的能力。飞车游戏的源代码共有22628行。属于一个小型的项目,但却展现了游戏开发的各个方面,对于初学者来说,是一个不可多得的学习资源。以下将对RacingGame源代码逐步进行分析,阅读时最好能对照在RacingGame的源代码。你可以在http://www.xnaracinggame.com/找到适应不同XNAGameStudi

2、o版本的RacingGameStarterKit。当前下载到的源代码可能与本文编写时下载到的代码有些不同。由于本人水平有限,一定存在不足之处,敬请原谅。如需讨论,可联系QQ298210841,Email:wufei_spring_c@163.com。第一节:辅助类(Helpers)。第二节:基础图形部分(Graphics)第三节:特效部分(Shaders)第一节:辅助类顾名思义,辅助类的作用就是提供服务。在面向对象设计的表述中他们也常被称为服务者。与服务者相对应的是掌握控制权的控制者。他们两者之间的关系可以理解为士兵和军官之间的关系:控制者控制着程序中的全

3、部,或部分逻辑;而服务者往往只封装了某一些方面的功能,自身并没有控制的能力,仅仅只是听候控制者的调遣。这种划分系统结构的方式在实际应用中经常被使用。其最大好处是结构清晰,同时也把在软件生存期间可能需要反复修改的控制流程集中到不处理低层问题的控制类中。相当于避免让一个战略家被繁杂事物困扰,使之能够专心思考战略全局上的问题。现在可以看看我们可爱的飞车游戏代码中的一些辅助类的组织结构了。值得注意的一点是飞车中类的组织结构中,虽然能明显看到一个Helpers文件夹,让人知道这里面是辅助类,但并不是所有的提供服务的类都在这儿。如Graphics中的很多提供基本绘制的

4、类,按上文所说的服务和控制的分法来说,也应该属于辅助类。在飞车的组织结构中,同样可以看到一个名为GameLogic的文件夹,从名字上很明显可以判断这属于控制者。但同样,并非代码中所有的控制者都在GameLogic中,在GameScreens中的那些控制着游戏界面样式的类同样属于控制类。所以说辅助类和控制类是更多意义上是一种抽象的理解。在BenjaminNitschke设计每一个类的时候并没有刻意去注意哪些类属于服务者,哪些类又是控制者。但我们在阅读他的代码中,思路中若能把握这样一条线索,对整个游戏的结构便能看的更加明晰。这一节的主要内容是分析飞车结构中的H

5、elpers目录中的几个文件。如前所述,严格意义上这并不是代码中全部的辅助类。但为了全编的条理性,我将其他涉及具体功能的辅助类放到相应节中叙述。文件一:ColorHelper.cs从文件名中就能够直观地看出该文件是一个颜色方面的辅助类。像这样以文件的主要内容为开头,以Helper、Manager、Controler、Keeper这样表示身份的词作为结尾的命名方式同样也是面向对象设计中常使用的方法。比如负责碰撞检测的类称为CollisionManager,专门用来存储场景信息的类称为SceneDataKeeper等,在飞车的源代码中也能发现不少像这样的名称。

6、让我们开始分析这个源文件。源代码中对ColorHelper类的注释是这样说的:“颜色辅助类,只是转换颜色到不同的格式,同时提供在Color类(指XNAFramework中的Color类)中缺少的辅助方法。”然后我们可以注意下对ColorHelper类的声明。ColorHelper类被声明为publicstaticclass。对于public,我本并不想在此过多的说明,任何一本类C语言的入门书都会对这个关键字做全面的解释。但仍然容易见到很多写代码的人对public、internal、private这三个关键字的理解有限。很多人不明白internal的作用,该

7、用internal的地方都用public代替了。实际上internal的功能是强大的。在我当前的一个游戏项目SmartTank中,利用了[assembly:InternalsVisibleTo("assemblyName")]这个程序集属性将一个基础程序集的部分函数的调用权限制在若干高层程序集中。而在另一些未用该属性声明为内部可见的程序集中,这些函数是不可见的。个人认为这是管理组件之间的可见域的一种很简便的方法。免去了另一种在程序集之间使用接口和动态注入的办法的繁琐。而static这个关键字却是辅助类的一个很典型的标志。通过static关键字来将一个类声明

8、为静态类。这样,对ColorHelpr的所有引用都只会是Color

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。