找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[ 项目开发 ] 【守望者 游戏项目】基于cocos2d-x的跑酷游戏入门

2014-02-20 13:38| 发布者: watchmen | 查看: 3701 | 收藏

摘要: 基于cocos2d-x的跑酷游戏入门(1)项目名称:基于cocos2d-x的跑酷游戏入门项目难度:★项目内容:基于cocos2d-x的简易跑酷游戏,熟悉跑酷游戏的基本业务逻辑,熟悉cocos2d-x的开发环境和常用API项目教程Chatper 1 co ...

基于cocos2d-x的跑酷游戏入门(1)
项目名称:基于cocos2d-x的跑酷游戏入门

项目难度:
项目内容:基于cocos2d-x的简易跑酷游戏,熟悉跑酷游戏的基本业务逻辑,熟悉cocos2d-x的开发环境和常用API
项目教程

Chatper 1 cocos2d-x环境搭建
1.cocos2d-x支持vs2010,2012 那么这两个软件的搭建都很简单
2.配置python,cocos2d-x从2.15之后为了增强移植性,取消了VS模板,改用python创建
3.强烈建议使用python2.75的版本,不同的python版本可能导致程序运行出错。
4.在path环境变量中加入python变量,我的电脑→右键→属性→高级→环境变量→系统变量→path→加入你的python安装目录。测试一下:进入cmd,输入python,如果没有提示“不是外部或内部命令”,说明搭建成功
 



4.创建项目,进入cocos2d-x-2.20\tools\project-creator目录,可以在CMD下执行以下命令
python create_project.py -project Test -package com.jacky.test -language cpp//其中Test为工程名称,com.jacky.test为包名,-language后面跟上你要使用的开发语言
5.创建批处理文件.bat
@echo off
@echo cocos2d-x 项目快捷创建方式
set /p project=请输入项目名称:
if "%project%"=="" goto inputError
set /p package=请输入包标示名:
if "%package%"=="" goto inputError
set /p language =请输入语言名 /cpp/javascript/lua:
if "%language%"=="" goto inputError 
create_project.py -project %project% -package %package% -language %language%
pause
exit
:inputError
@echo 项目名称或者包标示名不能为空!
pause
将批处理文件放在cocos2d-x-2.20\tools\project-creator,每次创建项目,双击即可
6.项目文件在cocos2d-x-2.20\projects文件夹下面,里面包含了各个平台的项目,是哪一个平台直接点击运行即可

chatper 2 跑酷游戏基本逻辑设计
        这个跑酷游戏逻辑比较简单,固定角色精灵在一个固定的位置,循环背景图,造成背景图运动,给人错觉为人物在跑动,在建立怪物类,怪物随机在地图外产生,然后向角色精灵方向移动,如果碰撞,主人公掉血,如果不碰撞,出场景消除,每秒加上跑动的分数。就是我们的基本逻辑,人物由两个按键控制跳跃和蹲下。
                                           

基于cocos2d-x的跑酷游戏入门(2)
chatper 3 类结构的设计
             本项目类的结构较为简单,主要是角色和怪物的,主要场景为用户交互事件和业务逻辑,根据分析,我们可以建立这样几个类,来分别表示各个对象之间的关系
由于结构简单,我们首先构建一个基类来管理我们的角色,和怪物,为什么?因为角色和怪物都是精灵,都有共同属性。那就是具有节点和精灵贴图,所以我们可以构建这样一个基类来管理
class BasisEntity:public CCNode{
private:
          CCSprite* m_sprite;
public:
         BasisEntity();
        ~BasisEntity();
         CCSprite* GetSprite();//得到一个精灵对象
         void bindSprite(CCSprite* sprite);//绑定精灵对象到类
};
解释一下我们为什么要继承CCNode类,而没有继承CCSprite类,很多人肯定会疑问,我们的角色怪物是精灵啊,为什么不是继承精灵类,而是节点类?比如就那角色这个类来说,我们的角色有怎样的属性,他可以跑可以跳,还能被挨打,被掉血,有血条等等的属性值,如果我们继承精灵类就变得不是非常方便,为什么我们有没有继承CCLayer类呢,因为CCLayer包含了很多不是精灵的属性和事件,当我们继承CCLayer随着功能的增加而类的结构也变得臃肿了,所以,一般情况下我们都是选择继承CCNode。
基类建立了就该建立我们的角色类(Role)和怪物类(monster)
class Role:public BasisEntity{
 public:
     Role();
               ~Role();
               virtual bool init();
               CREATE_FUNC(Role);
    public:
               void RoleJumpUp();
               void RoleJumpEnd();
               void getRoleHp();
               bool RoleCurrentState();
               void RoleUpdata();
private:
               bool m_isJumping;
               int    m_RoleHp;
public:
               inline bool getJumpingState(){return m_isJumping;}


};

角色类的基本结构就是这样,为什么这么定义呢?
分析一下角色的属性 ,角色需要能够跳跃,那么跳跃就有升起和落下两个阶段,
角色也需要有血量才能判断最后的胜利条件,
还需要一个函数去判断是否发生碰撞,如果发生碰撞那么就需要一个角色碰撞状态的检测
根据分析对象来写这样一个类的结构
根据类的结构来完成相应的操作就很简单了。
这个角色的属性和方法,那么怪物的属性和方法我们也可以用同样的方法去完成
class monster :public BasisEntity{
public:
          monster();
          ~monster();
          virtual bool init;
          void MonsterUpdata();
          void createMonster();
          CREATE_FUNC(monster);
public:
         void removeMonster();
         void resetMonster();
         void ActiveMonster();
         bool isAlive(){return m_isAlive}
private:
         bool m_isAlive;

           CCArray * m_MonsterArr;
};

由于怪物很多,我们直接用CCArray的数组来进行直接管理,如果是活着的就让怪物执行活着的动作,比如走路的动画,如果死了,那就直接不显示,然后从数组中移除掉


基于cocos2d-x的跑酷游戏入门(3)
我们在上面规划了类的结构,下面就该完成 实现和组合 从 BasisEntity开始一步一步完成功能
class BasisEntity:public CCNode{
private:
          CCSprite* m_sprite;
public:
         BasisEntity();
        ~BasisEntity();
         CCSprite* GetSprite();//得到一个精灵对象
         void bindSprite(CCSprite* sprite);//绑定精灵对象到类
};


首先是实体基类,我们还是从功能上入手
实体基类里我们完成的无非就是对精灵的初始化,传入精灵。
BasisEntity.cpp  

BasisEntity::BasisEntity()
{
      m_sprite == NULL;
}
BasisEntity::~BasisEntity(){}


BasisEntity::GetSprite(){
     return this->m_sprite;
}
void BasisEntity::bindSprite(CCSprite* sprite){
     this->m_sprite = sprite;
     this->addChild(m_sprite);
}


会员评论  

已有0参与评论

推荐阅读

[守望者   java初中级视频]22_javaNIO,AIO编程
[守望者 java初中级视频]22_javaNIO,
内容简介:本课程介绍阻塞,非阻塞,同步和异步的基本概念,介绍javaNIO,AIO
[守望者 算法视频]01_数据存储(链表与数组)
[守望者 算法视频]01_数据存储(链表与
本章重点介绍数据的在计算机的存储方式 :连续存储(数组)与链式存储,同时
【守望者 观点】智能路由和Wi-Fi探针是一对好基友
【守望者 观点】智能路由和Wi-Fi探针是
智能路由与Wifi探针可以收集用户行为,同时可以收集用户MAC地址,还可以跟踪
【守望者 游戏项目】基于cocos2d-x的跑酷游戏项目教程
【守望者 游戏项目】基于cocos2d-x的跑
Cocos2d-x跑酷游戏项目教程Cocos2d-x跑酷游戏项目教程cocos2d-x特性cocos2
[守望者   java初中级视频]00_java初中级课程学习导航
[守望者 java初中级视频]00_java初中
内容简介:全面贾少这套视频课程学习需要具备的理论基础,以及适合的学习人群
【守望者 linux项目】mini WEB服务器设计
【守望者 linux项目】mini WEB服务器设
以下是曾经Watchmen一个朋友学习网络编程时设计的一个简单的MiniWEB服务器。
【守望者 linux项目】linux下的FTP服务器与客户端,作者 灯下野狐 ...
【守望者 linux项目】linux下的FTP服务
本项目是一个完整的FTP服务器及FTP客户端设计示例,对于需要学习网络编程项目
[守望者 算法视频]08_数据查找_hash算法
[守望者 算法视频]08_数据查找_hash算
守望者:普通逐个查找O(n),组织方式可以无序的数组或者普通链表。已经排序的
[守望者 linux视频]01_开发工具与开发平台
[守望者 linux视频]01_开发工具与开发
本课主要介绍gcc,gdb等系列开发工具,开始编写程序之旅。要求理解Linux开发平
【解读】什么样性格的人会被夸性格好
【解读】什么样性格的人会被夸性格好
守望者:性格决定命令。好的性格意识着给别人面子,能接受别人装逼,而且以上

行业聚焦  面试交流  职位推荐  开发视频   技术交流  腾讯微博  新浪微博

友情链接:课课家教育  阿里云  鲜果  W3Cfuns前端网  中国企业家  环球企业家  投资界  传媒梦工场  MSN中文网  Android开发者社区  cnbeta  投资中国网  又拍云存储  美通说传播  IT茶馆  网商在线  商业评论网  TechOrange  IT时代周刊  3W创新传媒  开源中国社区  二维工坊  Iconfans  推酷  智能电视网  FreeBuf黑客与极客  财经网  DoNews  凤凰财经  新财富  eoe移动开发者社区  i黑马  网易科技  新浪科技  搜狐IT  创业家  创业邦  腾讯财经  福布斯中文网  天下网商  TechWeb  雷锋网  新浪创业  和讯科技  品途O2O  极客公园  艾瑞网  抽屉新热榜  卖家网  人民网通信频道  拉勾网  创新派  简单云主机  

手机版|黑名单|守望者在线 在线教育 linux 高级程序设计 C/C++ 大数据 ( 蜀ICP备14029946号

成都守望者科技有限公司 © 2013-2016 All Rights Reserved