- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第25章 仿3D游戏开发:推箱子游戏 PC游戏早已在IT行业形成了庞大的产业链,很多IT企业都凭借着雄厚的游戏开发技术而占据电子游戏娱乐市场。而游戏项目的开发也依赖于文化背景和软硬件性能,因此游戏研发工程师在长期以来都面临着人员紧缺的情况。 本章的主要内容有: Win32 SDK程序设计基础:读者可以了解到使用Win32 SDK进行程序设计的基础理论。 游戏逻辑和游戏地图:读者将学会PC游戏的设计的重要理念,将游戏逻辑代码和游戏地图部署分离开来。 实例练习:读者将学会自己编写一个仿3D游戏。 25.1 目前的PC游戏种类简介 目前的PC游戏种类繁多,内容和视觉效果各异,同时,在IT业界也形成了一支庞大的产业。以游戏效果来分类,目前的PC游戏可以分为3类: (1)2D游戏主要有: 星际争霸,帝国时代,英雄无敌,大富翁4,轩辕剑3,传奇,石器时代等。其标志是:视角完全固定或只有四个观察方向。这些游戏中特效不多,即使有也不需要使用汇编加速,运行环境要求较低。 (2)特殊的2D游戏主要有: 暗黑2,秦殇等。其特点在于各种特效(半透明,光影效果等)的大规模使用。有的此类游戏还可以使用3D加速卡来加速2D特效,有些需要较高版本的directX支持。 (3)纯3D游戏: 反恐精英,雷神,魔兽争霸3,地牢围攻,极品飞车。这些都是,也代表了目前游戏的发展趋势。该类游戏使用较多的汇编加速,技术难度较前两种大,运行环境要求较高,特别是对于硬件要求。 25.2 仿3D游戏:推箱子游戏开发的基础和概要设计 所谓的仿3D游戏,实际上还是2D,只是在效果上看起来像3D。而开发3D游戏,已经超出了本书的知识范围,但以本书的知识,开发一个仿3D的游戏,还是足够的。 25.2.1 Win32 SDK程序基础 Win32应用程序的流程在第1章已经有过粗略的介绍,本章的范例无需使用到MFC,处于视觉效果的考虑,需要使用到Win32 SDK函数。 25.2.2 需求分析 基本思路是按照win32程序的程序接口结构,设计一个游戏,实现一个“人”作为主动方,应该直接由游戏玩家通过键盘直接控制。被推的“箱子”,箱子作为被动方,应该能自动根据“人”的推动来进行移动,实现“被推”的移动效果。至于地图的绘制,应该由外部文件导入来完成,然后通过对应的图片剪切,将地图画好。 主要的设计难点有: 控制“人”的移动与箱子的配合移动。 地图的定义以及绘制。 地图数据的导入,如人物坐标,箱子的个数以及各个箱子的坐标。 实现文件格式的数字抽象地图转换为由图片构成的美观的真实的地形场景。 25.2.3 游戏规则和效果 想办法将全部箱子推到目的点(箱子数目跟目的点的数目是一样的),注意:不能两个或两个以上的箱子一起推,把箱子推到边缘或者死角处就不能再返回了。全部箱子都到达目的点之后,就算过关,并且跳到下一关。 该游戏的操作比较简单,主要操作如下: 操作一:按方向键,进行控制“圆柱”(相当于“人”),用这个“圆柱”来推箱子,不能同时推动两个箱子,当箱子或者作为主动者的“圆柱”靠墙时,则推不动,最终目的是使全部箱子都到达预定的目的地; 操作二:中途结束游戏:点击Esc键退出即可; 操作三:如果不想再玩当前的关,则按空格键,直接跳入下一关。 25.2.4 技术难点的解决方案 推箱子游戏需要实现的技术和难点主要有4个: (1)控制人和箱子的移动;设置一个函数,命名为MovePeople(),参数为移动的方向,当键盘消息对应的switch语句的某个方向键按下时调用。这个函数的基本实现功能是:根据传递过来的参数的值(只可能是四个方向值),选择对应的case语句,在case语句里面实现移动功能,“人”向前移动,如果前面没有“箱子”,则人可以向前移动,如果有箱子,则要检查一下是否两个箱子在同一个方向上连在一起,(游戏的规则是,不能同时推动两个箱子),或者箱子的前面是不是边界,如果是,则推不动,如果不是,则“人”跟“箱子”都向前移动一格。 (2)地图的定义以及绘制;地图设计为一个外部文件,用文本文件,使用宏,用数字表示抽象的地图,暂时设置为“墙壁”=1,“空格”=0,“目标”=2。 (3)地图数据的导入;设置一个LoadFile(*name)函数,使用文件读取函数将外部文本地图文件导入并且读取,实现的基本功能是:能够实现地图的读取,包括墙壁,空格,目标,还有读取非地图数据,如:“人”的初始坐标,“箱子”的初始坐标等。 (4)将文本数字地图数据转换为美观的伪3d场景;从外部导入图片,将其导入到设备中,然后对其进行分别替换显示。编写Show()函数,将文本数字文件中的数据地图通过检查不同的标记来进行图形替换并且显示。 25.3 游戏项目开发过程 本章的游戏其实非常简单,但基本上也涵盖了仿3D游戏的基本知
文档评论(0)