游戏程序设计教程——从游戏引擎构建到实际应用 万立中 万立新 Chapter_09新.pptVIP

游戏程序设计教程——从游戏引擎构建到实际应用 万立中 万立新 Chapter_09新.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 为引擎添加游戏场景模块 内容提纲 9.1 游戏场景模块需求分析 9.2 游戏场景模块的设计 9.3 游戏场景模块的实现 1 场景操作函数 2 图层操作函数 3 地图文件解析函数 4 场景绘制函数 9.4 游戏场景模块应用实例 第9章 为引擎添加游戏场景模块 最终游戏场景是由多个图层叠加在一起构成的 这些图层可能是:背景图像、前景对象、不同性质的地图图层、NPC、玩家角色、子弹、爆炸动画、文字等; 这些图层组合在一起共同构成了完整的游戏元素; 每个图层都有各自独立的属性,能够被单独控制,在整个游戏中发挥着各自不同的作用 为了能够方便地操作这些性质不同的图层,我们需要一个可以统一管理这些图层的游戏场景模块 该类可以管理游戏中所有需要独立控制、单独描述属性的图层 无论是游戏角色还是游戏地图,都可以通过这个场景类统一操作,如绘制、定位、移动等 9.1 游戏场景模块需求分析 游戏场景模块要为游戏各图层提供一个共同的图层容器: 容器内各图层可作为统一整体来操作,如进行排序、插入、删除等操作; 每关游戏结束后,通过游戏场景模块可以很方便地清除各图层资源。 场景模块可以方便地对各图层进行相应的平移处理; 可以将容器内各图层统一绘制,外部类无须关心绘制细节,只须调用模块提供的绘制函数,就能方便地绘制全部游戏图层。 上一章构建的T_Map类只能描述一个地图图层; 地图文件中可能存在若干地图图层; 每个图层解析后都需要一个T_Map类对象来描述; 利用游戏场景模块统一管理各图层。 9.1 游戏场景模块需求分析 游戏场景模块命名为T_Scene类,它主要涉及4个方面的需求: 图层管理:采用vector容器来管理游戏中全部图层; 场景管理:统一管理整个场景的坐标位置、场景滚动处理、场景定位,并负责场景初始化; 地图文件解析:在解析地图文件的过程中,无论解析出多少个地图图层,只要将其统一添加到图层容器中,就可以方便地进行位移、删除、排序、绘制等操作 场景绘制: 保持各图层之间的正确顺序,有必要时对现有图层按其序号重新排序,然后再依次绘制; 绘制前,将场景类上一次的坐标与当前的坐标进行比较,判断其是否发生了滚动。如果是,则将每个图层的坐标进行同步位移处理,然后再绘制。 9.2 游戏场景模块的设计 定义管理图层用的GAMELAYER结构体类型,其中包含3个关键数据成员,分别记录图层序号、图层类型标识号以及指向实际图层对象的指针。 typedef struct { int z_order; // 图层序号(序号越小图层离观众越近) int type_id; // LAYER_TYPE常量值的图层类型标识号 T_Layer* layer; // 地图图层图像 }GAMELAYER; 利用GAMELAYER结构体定义vector类型的图层容器,并重新定义新名称。具体代码如下: // 游戏中的图层容器类型 typedef vectorGAMELAYER SCENE_LAYERS; T_ Scene类的定义 T_ Scene类在T_ Scene.h和T_ Scene.cpp文件中实现 具体定义代码请参见教程 9.3 游戏场景模块的实现 要实现的函数包括: T_ Scene类的构造函数和析构函数 T_ Scene类的功能函数: 场景操作函数 与场景操作相关的函数有4个,分别是: InitScene()函数 SetScenePos()函数 MoveScene()函数 ScrollScene()函数 图层操作函数: 与图层操作相关的函数有6个,分别是: Append() Insert() Remove() RemoveAll() SortLayers() getRandomFreeCell() SortByZorder()函数要与SortLayers()函数配合使用 9.3 游戏场景模块的实现 地图文件解析函数 地图文件解析涉及以下函数: GetTxtMapValue()函数 parseCsvData()函数 LoadTxtMap()函数 场景绘制函数 T_Scene类中只有唯一一个负责绘制场景的函数 Draw ()函数 具体实现代码请参见教程 9.4 游戏场景模块应用实例 本应用实例主要说明如何使用T_Scene类管理游戏图层。 代码将在上一章例8-1的基础上修改实现。 实例功能基本不变,只是将原来鼠标控制玩家角色代码去掉,本例的玩家角色只接受键盘控制。 NPC在地图上的漫游行为保持不变。 本例要将原来用数组保存地图数据的方式,改为用地图文件。 地图数据仍然相同,只是通过解析地图文件获取地图数据。 【例9-1】应用T_Scene类管理游戏图层、加载地图文件,实现角色在地图上的漫游。 具体实现代码请参见教

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档