佚名通过本文主要向大家介绍了独自一人,独自一人生活的女人,独自一人僵尸丛林,独自一人英文,独自一人饮酒醉等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 独自一人的手游开发之路持续更新cocos2dx-开发IOS
描述:
不知道你们有没有在某个夜晚整宿整宿的睡不着,心里的空虚像潮水般涌来,觉得自己似乎从未真正的做成过某件事,这种没来由的遗憾塞满了我的心,这些辗转反复无法入眠的夜晚给了我一些不一样的感觉,让我觉得,有些事,既然决定了就要做完,哪怕只有孤独伴随。我很喜欢的一句话,送给我自己,也送给所有那些心中有未完成梦想的人。
正确的事情,什么时候做都不晚。
言归正传,说说这个项目。
策划上这个游戏是要做成横版的动作策略游戏,资源全套用的都是网络上的,冒险岛素材。这是一个召唤怪物出来替你打怪过关的游戏,点击下方的怪物卡牌,就会召唤出相应的士兵,这些士兵具有一定程度的AI,会自动锁定攻击最近的怪物,能根据你输入的策略符文改变打法,能触发技能,技能触发之后士兵头上会显示一个技能的图标,点击之后就能发出技能。召唤士兵和使用技能都要用能量,能量系统类似于植物大战僵尸,需要在其产生后手动点击收集,战斗中杀死敌人也会得到能量。士兵的技能可以通过配置画面更换,士兵的属性也可以提升,总之就是一款正宗的横版过关手游。然而这只是我脑子中的想法,并没有写成策划案,系统是想到哪写到哪。说说代码吧,整个项目的继承树由CGameObjectAbstract基类开始衍生,继承出CGameImageObject负责具有渲染的子类,CGameComponentObject负责没有渲染的功能,图形接口类总有CGameMonster,CGameSoidier等等。


主要使用的还是聚合模式,用自己的类封装了cocos2dx的功能。其他使用的设计模式还有工厂方法,单例,策略,桥接等等乱七八糟的都在用。先看自己抽象的CGameInstance类,涌来封装整个游戏的启动逻辑。
[code=c]
//
// CGameInstanceIOS.h
// RPGMapstory
//
// Created by Ling Dong on 13-8-27.
// Copyright (c) 2013年 __MyCompanyName__. All rights reserved.
//
#ifndef RPGMapstory_CGameInstanceIOS_h
#define RPGMapstory_CGameInstanceIOS_h
static void fun();
#include "CGameInstanceAbstract.h"
#include "cocos2d.h"
using namespace cocos2d;
class CGameInstanceIOS:public CGameInstanceAbstract
{
protected:
CGameInstanceIOS()
{
std::cout<<"CGameInstanceIOS is create"<<std::endl;
}
CGameInstanceIOS(const CGameInstanceIOS& rhs)
{
}
const CGameInstanceIOS& operator=(const CGameInstanceIOS& rhs)
{
}
public:
virtual ~CGameInstanceIOS()
{
std::cout<<"CGameInstance is destory"<<std::endl;
}
static CGameInstanceIOS * sharedGameInstanceIOS();
virtual void InitGameInstance();
virtual void InitGameSetting();
virtual void CleareGameInstance();
virtual void PauseGameInstance();
virtual void ResumeGameInstance();
virtual void StartRunGameInstance();
private:
CCScene * m_pGameScene;
};
#endif
//
// CGameInstance.cpp
// RPGMapstory
//
// Created by Ling Dong on 13-9-4.
// Copyright (c) 2013年 __MyCompanyName__. All rights reserved.
//
#include <iostream>
#include "CGameInstanceIOS.h"
#include "CGameDataStruct.h"
#include "cocos2d.h"
#include "CGameScene.h"
using namespace cocos2d;
static CGameInstanceIOS * theGameInstnace = 0;
CGameInstanceIOS * CGameInstanceIOS::sharedGameInstanceIOS()
{
if(!theGameInstnace)
{
theGameInstnace = new CGameInstanceIOS();
if (theGameInstnace)
{
theGameInstnace->InitGameInstance();
return theGameInstnace;
}
}
return theGameInstnace;
}
void CGameInstanceIOS::InitGameInstance()
{
}
void CGameInstanceIOS::InitGameSetting()
{
CCDirector::sharedDirector()->setOpenGLView(CCEGLView::sharedOpenGLView());
CCDirector::sharedDirector()->setDisplayStats(true);
CCDirector::sharedDirector()->setAnimationInterval(GAME_INTERVAL);
}
void CGameInstanceIOS::CleareGameInstance()
{
}
void CGameInstanceIOS::StartRunGameInstance()
{
m_pGameScene = CGameScene::GetScene();
CCDirector::sharedDirector()->runWithScene(m_pGameScene);
}
void CGameInstanceIOS::PauseGameInstance()
{
m_iGameStateValue = GAME_STATE_PAUSE;
}
void CGameInstanceIOS::ResumeGameInstance()
{
m_iGameStateValue = GAME_STATE_RESUME;
}
然后是自己继承自CCLayer的CGameScene涌来封装游戏流程。
//
// CGameScene.h
// RPGMapstory
//
// Created by Ling Dong on 13-9-4.
// Copyright (c) 2013年 __MyCompanyName__. All rights reserved.
//
#ifndef RPGMapstory_CGameScene_h
#define RPGMapstory_CGameScene_h
#include <iostream>
#include "cocos2d.h"
using namespace cocos2d;
class CGameScene:public CCLayer
{
public:
CGameScene()
&n
描述:
cocos2dx iOS 手游
这个坑是我2013年的时候挖的,当时正在看设计模式,想着写个游戏来实践下,于是就有了这个项目。那时候我天真的以为我可以很快就完成它,然而事实并非如此,这两年发生了太多事,加上之后大病一场,这个项目也就不了了之了。不知道你们有没有在某个夜晚整宿整宿的睡不着,心里的空虚像潮水般涌来,觉得自己似乎从未真正的做成过某件事,这种没来由的遗憾塞满了我的心,这些辗转反复无法入眠的夜晚给了我一些不一样的感觉,让我觉得,有些事,既然决定了就要做完,哪怕只有孤独伴随。我很喜欢的一句话,送给我自己,也送给所有那些心中有未完成梦想的人。
正确的事情,什么时候做都不晚。
言归正传,说说这个项目。
策划上这个游戏是要做成横版的动作策略游戏,资源全套用的都是网络上的,冒险岛素材。这是一个召唤怪物出来替你打怪过关的游戏,点击下方的怪物卡牌,就会召唤出相应的士兵,这些士兵具有一定程度的AI,会自动锁定攻击最近的怪物,能根据你输入的策略符文改变打法,能触发技能,技能触发之后士兵头上会显示一个技能的图标,点击之后就能发出技能。召唤士兵和使用技能都要用能量,能量系统类似于植物大战僵尸,需要在其产生后手动点击收集,战斗中杀死敌人也会得到能量。士兵的技能可以通过配置画面更换,士兵的属性也可以提升,总之就是一款正宗的横版过关手游。然而这只是我脑子中的想法,并没有写成策划案,系统是想到哪写到哪。说说代码吧,整个项目的继承树由CGameObjectAbstract基类开始衍生,继承出CGameImageObject负责具有渲染的子类,CGameComponentObject负责没有渲染的功能,图形接口类总有CGameMonster,CGameSoidier等等。


主要使用的还是聚合模式,用自己的类封装了cocos2dx的功能。其他使用的设计模式还有工厂方法,单例,策略,桥接等等乱七八糟的都在用。先看自己抽象的CGameInstance类,涌来封装整个游戏的启动逻辑。
[code=c]
//
// CGameInstanceIOS.h
// RPGMapstory
//
// Created by Ling Dong on 13-8-27.
// Copyright (c) 2013年 __MyCompanyName__. All rights reserved.
//
#ifndef RPGMapstory_CGameInstanceIOS_h
#define RPGMapstory_CGameInstanceIOS_h
static void fun();
#include "CGameInstanceAbstract.h"
#include "cocos2d.h"
using namespace cocos2d;
class CGameInstanceIOS:public CGameInstanceAbstract
{
protected:
CGameInstanceIOS()
{
std::cout<<"CGameInstanceIOS is create"<<std::endl;
}
CGameInstanceIOS(const CGameInstanceIOS& rhs)
{
}
const CGameInstanceIOS& operator=(const CGameInstanceIOS& rhs)
{
}
public:
virtual ~CGameInstanceIOS()
{
std::cout<<"CGameInstance is destory"<<std::endl;
}
static CGameInstanceIOS * sharedGameInstanceIOS();
virtual void InitGameInstance();
virtual void InitGameSetting();
virtual void CleareGameInstance();
virtual void PauseGameInstance();
virtual void ResumeGameInstance();
virtual void StartRunGameInstance();
private:
CCScene * m_pGameScene;
};
#endif
//
// CGameInstance.cpp
// RPGMapstory
//
// Created by Ling Dong on 13-9-4.
// Copyright (c) 2013年 __MyCompanyName__. All rights reserved.
//
#include <iostream>
#include "CGameInstanceIOS.h"
#include "CGameDataStruct.h"
#include "cocos2d.h"
#include "CGameScene.h"
using namespace cocos2d;
static CGameInstanceIOS * theGameInstnace = 0;
CGameInstanceIOS * CGameInstanceIOS::sharedGameInstanceIOS()
{
if(!theGameInstnace)
{
theGameInstnace = new CGameInstanceIOS();
if (theGameInstnace)
{
theGameInstnace->InitGameInstance();
return theGameInstnace;
}
}
return theGameInstnace;
}
void CGameInstanceIOS::InitGameInstance()
{
}
void CGameInstanceIOS::InitGameSetting()
{
CCDirector::sharedDirector()->setOpenGLView(CCEGLView::sharedOpenGLView());
CCDirector::sharedDirector()->setDisplayStats(true);
CCDirector::sharedDirector()->setAnimationInterval(GAME_INTERVAL);
}
void CGameInstanceIOS::CleareGameInstance()
{
}
void CGameInstanceIOS::StartRunGameInstance()
{
m_pGameScene = CGameScene::GetScene();
CCDirector::sharedDirector()->runWithScene(m_pGameScene);
}
void CGameInstanceIOS::PauseGameInstance()
{
m_iGameStateValue = GAME_STATE_PAUSE;
}
void CGameInstanceIOS::ResumeGameInstance()
{
m_iGameStateValue = GAME_STATE_RESUME;
}
然后是自己继承自CCLayer的CGameScene涌来封装游戏流程。
//
// CGameScene.h
// RPGMapstory
//
// Created by Ling Dong on 13-9-4.
// Copyright (c) 2013年 __MyCompanyName__. All rights reserved.
//
#ifndef RPGMapstory_CGameScene_h
#define RPGMapstory_CGameScene_h
#include <iostream>
#include "cocos2d.h"
using namespace cocos2d;
class CGameScene:public CCLayer
{
public:
CGameScene()
&n