本系列学习教程使用的是cocos2d-x-2.1.4(最新版为cocos2d-x-2.1.5)

博主发现前两个系列的学习教程被严重抄袭,在这里呼吁大家请尊重开发者的劳动成果,

转载的时候请务必注明出处:http://blog.csdn.net/yangyu20121224/article/details/11177559

经过一个多月利用业余时间对于Cocos2D-X坚持不懈的学习和努力,对于大部分的基础知识基本上已经学的差不

多了,当然博主要学习的还有很多,依然会继续将《Cocos2D-X开发学习笔记》专题写下去,总结在学习的过程中遇

到的一些困难以及解决的方法,让那些初学者也可以少走一些弯路。

但是,只是一味的学习基础知识是不够的,我们还需要实战项目的磨练,将零散的知识结合起来,才能开发出一

个完整的游戏,我们学习Cocos2D-X游戏引擎的目的不就是为了开发游戏么?所以博主决定一边学习新的知识,一边

以实战项目为主,对之前学习过的内容进行加强和巩固,以达到事半功倍的效果。

一、开发前的准备

对于有经验的开发者而言,在项目开始之前,都会对策划和需求进行分析建模,把描述性的文档转换成开发模

型,并对诸如命令规则等的标准进行统一。这在团队开发中尤为重要。虽然接下来的是独立开发,当仍有必要确立唯

一的标准。

这里我们将使用驼峰命名法以及MVC模式进行开发,并且在开发过程中将代码可读性作为首要的考虑因素,而且

博主也会为其注上详细的注释。

MVC模式是软件工程中的一种软件架构模式,包括模型(Model)、视图(View)、和控制器(Controller)3部

分。模型包括了数据和逻辑等,并不关心界面上的显示形式。视图则不包含程序上的逻辑,仅监控模型中的数据,并

根据数据的内容,将其在界面上显示出来。控制器则起到不同层面间的组织作用,用于控制应用程序的流程及消息传

递。根据程序的复杂程度,视图和模型的分离程度可能也有所不同。在此我们不进行更深层次的讨论,只在接下来的

内容中说明如何在Cocos2D-X的实战项目开发中运用这种模式。

二、视图(View)

游戏中的视图包括了CCScene下所有可见的节点和元素。在MyFishingJoy游戏项目中存在两个场景:开始场景和

游戏场景。

开始场景:

开始场景由于预加载资源,这是游戏开发中常用的做法。在游戏开始之前,将外部资源加载进缓存中来保证游戏

过程中的流畅性。在Cocos2D-X中,共有4个缓存区,它们是CCTextureCache、CCSpriteFrameCache、

CCAnimationCache和CCShaderCache,分别对应图片纹理、精灵、动画和着色器。我们需要做的是调用这些缓存提

供的接口,异步载入资源,并以进度条的形式实时提示玩家当前的载入进度。载入完成之后方可进入下一场景。因

此,其界面并不复杂,除了简单的背景和标题之外,仅有一个需要更新的进度条。

游戏场景:

游戏场景是整个游戏的核心,包含了大部分的游戏逻辑和数据,也是游戏可玩性的体现。其界面比较复杂,大部

分可见元素都需要根据数据的变化实时更新。在开发的初期,我们应看重完成游戏场景,制作出游戏的雏形,而不是

把时间花费在菜单、载入界面等与游戏相关性较弱的地方。

三、模型(Model)

这部分主要包括了游戏逻辑数据。在之前基础知识的学习中,我们已经知道了可以通过CCUserDefault、XML、

JSON、SQLite或其他方法对游戏数据进行持久化的存储。这些方法的技术难度和功能都有其不同的倾向,例如,

SQLite比起XML,更倾向于大型数据的处理。我们需要根据游戏中的需求慎重选择对应的技术。

MyFishingJoy项目中的数据主要分为两部分:静态数据动态数据

1、静态数据

静态数据是程序中的只读数据,例如图片名、NPC的名字、道具的售价甚至是图片的坐标等。这些数据不会在游

戏过程中发生改变,然而,在开发过程中它们却可能经常变动。为了便于修改,一个常规的做法是把这些数据放到外

部文件进行保存,杜绝硬编码。

我们会在今后的实战项目中选择使用plist(property list)保存静态数据,并使用plist编辑工具进行必要的修改。在

程序中,通过调用以下代码读取文件,并以字典的形式存储在缓存中。

CCDictionary* dic = CCDictionary::createWithContentsOfFile(const char *pFileName);

提示:对于静态数据的存储,我们还有许多备选方案,例如,使用CocosBuilder存储精灵的坐标、角度和比例等信息,亦或是使用PhysicsEditor存储物理游戏中刚体的参数等。大家有兴趣的话不妨进一步探索方便我们开发的工具。

2、动态数据

相对于静态数据,这部分数据在游戏过程中会频繁变动,例如玩家的金币数和经验值等。所以,我们需要选择便

于在程序中读写的数据保存形式。

对于MyFishingJoy项目而言,动态数据有玩家的金币数以及音乐音效的大小。这些数据都是线性结构,没有嵌套

关系,而且数据量也很小,因此我们使用Cocos2d已经封装好的CCUserDefault即可。

提示:许有些朋友会觉得使用SQLite、JSON或者其他一些技术看上去显得酷一些,但在实际开发过程中,慎重

选取更简洁、更符合需求的技术,往往能更好地降低开发的人力和时间成本,也能够使程序的效率得到提高。

四、控制器(Controller

控制器主要负责模型和视图之间的信息传递。在Cocos2d的定义中,CCScene作为场景内所有内容的载体出现,

而其本身并不直接在界面上显示。这无疑是最好的控制器。我们可以在这里进行数据与场景、场景与场景之间的交

互,即将CCScene类的对象作为逻辑控制和信息传递的“总司令部”。

【Cocos2d-X游戏实战开发】捕鱼达人之开发前准备工作(一)相关推荐

  1. 沉睡者-程序员利用javascript开发捕鱼达人游戏

    "捕鱼"特别是在于二线城市及县市是最多人喜欢玩的电玩了,就连我们农村小商店都有这样的电玩,有的人放几百甚至放几千进去玩,玩的天昏地暗,最后输的金光,比如我身边一个搞建筑的朋友,就特 ...

  2. cocos2dx游戏开发——捕鱼达人mini版学习笔记(一)——FishAchor的搭建

    一.创建文件· FishAchor.h还有FishAchor.cpp. 主要就是创建每种鱼的类,方便以后的取用~,很多是重复性的操作,然后我们是mini版,暂时也就加入大概6钟鱼就好= =,然后我们现 ...

  3. 【Unity小游戏】《捕鱼达人》小游戏来啦~ 有源码下载【文末送书】

  4. android 模拟器 xposd,xposed开发入门向之入门前准备工作 模拟器安装xposed框架

    本帖最后由 永恒陌 于 2019-12-20 15:15 编辑 2019-12-20: 这个模拟器的系统是自带root的.可以依葫芦画瓢在别的模拟器上装. ---------------------- ...

  5. Cocos2d-x高级开发教程:制作自己的《捕鱼达人》

    <Cocos2d-x高级开发教程:制作自己的<捕鱼达人>> 基本信息 作者: 火烈鸟网络科技 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115317964 ...

  6. 《捕鱼达人 3》主程洪志雄专访:如何使用Cocos2d-x完美呈现捕鱼3

    <捕鱼达人3>采用了Cocos2d-x 3.x版本中的3D功能来进行开发,实现了完全的3D化.作为一款支撑了无数2D游戏产品的引擎,Cocos2d-x本次也将带来3D方面的功能扩展,帮助广 ...

  7. 4亿玩家巅峰之作 《捕鱼达人3》全球震撼发布!

    四亿玩家巅峰之作<捕鱼达人3>今日全球震撼发布,捕鱼快乐加速升级!快快收拾行装,到海底世界展示你神一般的捕鱼技巧吧! 专属引擎 打造殿堂级3D画面 <捕鱼达人3>是一款采用Co ...

  8. 《捕鱼达人3》主程洪志雄专访:引擎3D功能重大突破与创新

    <捕鱼达人3>采用了Cocos2d-x 3.x版本中的3D功能来进行开发,实现了完全的3D化.作为一款支撑了无数2D游戏产品的引擎,Cocos2d-x本次也将带来3D方面的功能扩展,帮助广 ...

  9. 【原创】cocos2dx实战游戏开发之【捕鱼达人】---实体类(鱼,大炮)

    [捕鱼达人]游戏实战开发之实体类的实现        大家好,我是Lampard!!!    今天迎来捕鱼达人系列的第三篇博客更新,希望大家多多支持. 今天要实现的是实体类(鱼,大炮) (一)鱼类的实 ...

最新文章

  1. Python_note6 组合数据类型+jieba库+文本词频统计
  2. 【s操作】巧用免费云笔记和免费网盘的完美配合
  3. mandatory oracle 字段,Oracle 数据库需要在2019年April之前Mandatory升级的说明
  4. JavaFX技巧14:StackPane子项-隐藏但不消失
  5. Android Studio 导入新工程项目
  6. 为什么一个字节定义成8位?
  7. arm-2009q1-203-arm-none-linux-gnueabi.bin安装方法
  8. TableViewCell,TableView,UITableViewCell
  9. LOG4J 按类输出日志
  10. 分享按键精灵中使用大漠插件做后台脚本
  11. 监控网站与接口宕机,并推送 App 消息提醒的程序
  12. 卸载360天擎企业版
  13. Thinkpad T420 Fn热键在Windows10中的解决方案
  14. 厕所地图,玩出新花样!
  15. C语言:开平方判断素数
  16. PHY--PDSCH
  17. 六年Android生涯总结+展望:君子坐而论道,少年起而行之
  18. 最简真分数c语言,HihoCoder1655 : 第K小最简真分数([Offer收割]编程练习赛39)(唯一分解+容斥定理+二分)(不错的数学题)...
  19. c语言中输入scanf与getchar的啃爹之处
  20. 2万字好文!手把手教你实现 Docker 部署 Redis 集群

热门文章

  1. 在创业公司的那些日子(一)
  2. 进击高手【第十期】树
  3. Web大学生个人网页作业成品——学生个人爱好展示网站设计与实现(HTML+CSS+JS)
  4. 新浪在线可视化web编辑器PHP版
  5. 穷人翻身唯一出路是什么?穷人赚钱一点都不难?
  6. Okhttp网络请求工具介绍
  7. Echarts实现X轴拖动显示效果
  8. 可见光-反射红外遥感
  9. 老话题新解说:究竟什么是敏捷测试?
  10. JavaDay12 继承