文档章节

开源手游暗黑世界客户端部分代码注解续

大鸡蛋
 大鸡蛋
发布于 2013/09/10 18:52
字数 1112
阅读 166
收藏 0

开源手游,暗黑世界客户端基于Cocos2d-x 2.1.4,详情:http://www.9miao.com/thread-42811-1-1.html

接上篇博客:http://blog.csdn.net/wangqiuyun/article/details/11234467

介绍登录之后
-------------------------------------------------------------------------------------
//登录场景
loginregister\LayerLogin.h

1.1、LayerLogin::receiveLoginData()
//接收到登录返回数据
//如果有角色:
this->schedule(schedule_selector(LayerLogin::sendPersonalData), 0.2);
//没角色:
CCLayer *slayer=startAnimate::create();

1.2、LayerLogin::sendPersonalData()
this->schedule(schedule_selector(LayerLogin::receivePersonalData), 0.2);

1.3、LayerLogin::receivePersonalData()
//点击开始按钮
pMenuItemStart->setTarget(this, SEL_MenuHandler(&LayerLogin::menuItemCallbackStart));

1.4、LayerLogin::menuItemCallbackStart()
homePage * homePage = homePage::create();

-------------------------------------------------------------------------------------
//创建角色
loginregister\startAnimate.h

startAnimate::callbackSelectRole()
CCLayer *xr=xuanren::create();

-------------------------------------------------------------------------------------
//选人
loginregister\xuanren.h

1.1、xuanren::EnterName()
CCMenuItemImage * sure=CCMenuItemImage::create("common_btn_ok_1.png", "common_btn_ok_2.png", "common_btn_ok_3.png", this, menu_selector(xuanren::replacScene));

1.2、xuanren::replacScene()
this->schedule(schedule_selector(xuanren::receiveRoleInfo),0.2);

1.3、xuanren::receiveRoleInfo()
this->schedule(schedule_selector(xuanren::receiveHomeInfo), 0.2);

1.4、xuanren::receiveHomeInfo()

1.5、this->enterHomePage();
CCScene *homePage=CCScene::create();//homepage  beginAni

-------------------------------------------------------------------------------------
//主页
headFile\zhujieMian\homepage.h 

1.1、homePage::init()
//init 的时候发送消息[4500]给服务器,然后起定时器等待服务器回复.
SocketManager::getInstance()->sendMessage(json_file_jianghu.c_str(), 4500);
this->schedule(schedule_selector(homePage::rec_4500));

1.2、homePage::rec_4500()
//收到回复后,初始化窗体initTitle,btnsLoading,zhuangtaiLoad
this->initTitle();//加载标题
this->btnsLoading();//加载中部按钮
this->zhuangtaiLoad();//加载状态栏
this->downBtnLoading();//加载底部按钮

1.3、homePage::initTitle()
//加载标题,目前什么也没做

1.4、homePage::btnsLoading()
//加载中部按钮,即关卡
layerMainMap= LevelMap::create();

1.5、homePage::zhuangtaiLoad()
//加载状态栏
zhuangtai1 =zhuangtai::create();

1.6、homePage::downBtnLoading()
//加载底部按钮
btnHeCheng = CCMenuItemImage::create("zjm_hc_1.png", "zjm_hc_2.png", this, menu_selector(homePage::openHeCheng));
btnEmployFriends = CCMenuItemImage::create("zjm_employfriends_1.png", "zjm_employfriends_2.png", this, menu_selector(homePage::employFriends));
CCMenuItemImage *btnPersonal = CCMenuItemImage::create("zjm_personal_1.png", "zjm_personal_1.png", this, menu_selector(homePage::openPersonal));
linkFecharge = CCMenuItemImage::create("zjm_linkrecharge_1.png", "zjm_linkrecharge_2.png", this, menu_selector(homePage::recharge));
btnMail = CCMenuItemImage::create("zjm_mail_1.png", "zjm_mail_2.png", this, menu_selector(homePage::openMailWindow));
btnArena = CCMenuItemImage::create("zjm_arena_1.png", "zjm_arena_2.png", this, menu_selector(homePage::openArenaWindow));
homeLink = CCMenuItemImage::create("zjm_linkhome_1.png", "zjm_linkhome_2.png", this, menu_selector(homePage::mainView));

-------------------------------------------------------------------------------------
//状态栏
headFile\zhujieMian\zhuangtaiLoad.h

zhuangtai::init()
//获取玩家数据
char * json=CData::getCData()->getSendVal();
//设置显示玩家数据
coin=data["coin"].asInt();//货币
__coin=coin;
gold=data["yuanbao"].asInt();//金子、
level=data["level"].asInt();//等级
Exp=data["exp"].asInt();//当前经验
 maxExp=data["maxexp"].asInt();//最大经验
gas=data["gas"].asInt();//气
power=data["gas"].asInt();//力量

-------------------------------------------------------------------------------------
//中部副本按钮,即选关卡
headFile\zhujieMian\levelMap.h

1.1、LevelMap::init()
//点击事件
CCMenuItemSprite* leveltmp = CCMenuItemImage::create("zjm_building_1.png", "zjm_building_1.png", "zjm_building_2.png",this, menu_selector(LevelMap::clkBuilding));
//滚动,适应地图,绑定关卡数据
adjustMap(true)

1.2、LevelMap::adjustMap()
//CData::getCData()读取本关数据
MapItem* tmpLevelItemData = NULL;
tmpLevelItemData = CData::getCData()->getConfigOfMapLevel(offlevel + i);
//判断本关是否可玩
if(tmpLevelItemData->bid > currentLevelId)
{
    tmp->setEnabled(false);
}
else
{
    tmp->setEnabled(true);
}
//绑定本关数据      
tmp->setUserObject(tmpLevelItemData);

1.3、LevelMap::clkBuilding()
//获取关卡信息,然后展示关卡信息
MapItem *item = (MapItem*)building->getUserObject();
//buildingpop在popwindow.h
buildpop = buildingpop ::create();
this->getParent()->addChild(buildpop,100);
buildpop->show(item);

-------------------------------------------------------------------------------------
CData.h
//获取关卡信息,单例
CData::getCData()
//获取关卡信息
MapItem* CData::getConfigOfMapLevel(int levelid)
//读取配置文件
string path = CCFileUtils::sharedFileUtils()->fullPathForFilename("map.json");
return (MapItem*)m_config_map_level_dic->objectForKey(levelid);
//MapItem对应map.json记录如下:
{"dropicon":"\r","yid":0,"coin":248,"mconfig":[100001],"name":"阿卡拉的试炼","levelrequired":0,"resourceid":0,"scene":1000,"dropid":1,"priority":0,"exp":124,"icon":5000,"quality":1,"id":1000,"desc":"打败佣兵向阿卡拉证明你的实力"}

-------------------------------------------------------------------------------------
headFile\zhujieMian\popwindow.h

//展示关卡数据
1.1、buildingpop::show(MapItem *item)
this->item = item;

1.2、buildingpop::init()
//关闭按钮
cl=CCMenuItemImage::create("common_btn_close_1.png", "common_btn_close_2.png",this, menu_selector(buildingpop::close));
//布阵按钮
bz = CCMenuItemImage::create("popbuilding_buzhen_1.png", "popbuilding_buzhen_2.png",this, menu_selector(buildingpop::buzhen));
//战斗按钮
ft = CCMenuItemImage::create("popbuilding_fire_1.png", "popbuilding_fire_2.png","popbuilding_fire_3.png", this, menu_selector(buildingpop::fight));
//关闭
1.3、buildingpop::close()   
this->hide();

1.4、buildingpop::buzhen()
//布阵,调用父层布阵函数
((homePage*)(this->getParent()))->openNewBuZhen();
//移除本层
this->removeFromParent();

1.5、buildingpop::fight()
//点击战斗,显示加载层
load=Loading::create();
//玩家编号
root["characterId"]=CData::getCData()->getCharactorId();

//关卡编号 
root["zjid"]= this->item->bid;
//提交关卡及玩家数据,发送战斗请求,
SocketManager::getInstance()->sendMessage(json_file_zhandou.c_str(), 4501);
//定时器,每隔0.2秒调用receiveFireData检测一下是否接收到返回数据,如果接收到则取消定时器
this->schedule(schedule_selector(buildingpop::receiveFireData),0.2);

1.6、buildingpop::receiveFireData()
//接收战斗返回的数据,4501表示战斗
Message *revMsg=(Message *)CData::getCData()->m_dictionary->objectForKey(4501);

//返回的数据
char* data=revMsg->data;
//数据格式,结果以及评星数都已经确定
{"data": {"setData": {"huoli": -1, "item": [53000001], "coin": 248, "star": 3, "exp": 124}, "battleResult": 1, "stepData": [{"chaBattleId": 15, "enemyChaArr": [{"enemyBattleId": 25, "enemyChaId": 101, "enemyActionId": 96, "enemyChangeHp": -64, "enemyBuff": 0, "enemyCurrentHp": 2, "enemyTotalHp": 2}], "chaBuff": 0, "chaExpendHp": 0, "chaId": 1000003, "txtEffectId": 0, "actionId": 99, "chaCurrentHp": 56, "chaTotalHp": 56, "skill": 100006}], "startData": [{"chaBattleId": 15, "chaName": "123", "chaPos": 5, "chaLevel": 1, "chaDirection": 1, "chaIcon": 1, "chaCurrentHp": 56, "chaTotalHp": 56, "chaId": 1000003}, {"chaBattleId": 25, "chaName": "\u4f63\u5175", "chaPos": 5, "chaLevel": 1, "chaDirection": 2, "chaIcon": 6048, "chaCurrentHp": 2, "chaTotalHp": 2, "chaId": 101, "chaPz": 1}]}, "message": "", "star": 3, "result": true}    
CData::getCData()->m_dictionary->removeObjectForKey(4501);
//停止定时器
this->unschedule(schedule_selector(buildingpop::receiveFireData));
//进入战斗界面
CCScene *scene=Fire::scene();
//移除加载层
load->removeFromParent();

-------------------------------------------------------------------------------------
//战斗场景
FireWork.h

先写到这,后续!!!

本文转载自:http://blog.csdn.net/wangqiuyun/article/details/11483261

共有 人打赏支持
大鸡蛋

大鸡蛋

粉丝 124
博文 9
码字总数 477
作品 7
朝阳
程序员
私信 提问
基于Firefly + cocos2d-x的卡牌手游《暗黑世界V1.0》源码开放下载

安卓/IOS跨平台 卡牌手游源码《暗黑世界V1.0》完整商用版,免费提供下载!! 游戏名称:《暗黑世界》 游戏终端:安卓(android) / IOS 游戏类型:卡牌类 游戏版本:V1.0 服务器框架:Firef...

大鸡蛋
2013/08/19
9.9K
18
Firefly 团队口号: 拿走直接用!

Firefly是免费、开源、稳定、快速扩展、能 “热更新”的分布式游戏服务器端框架,采用Python编写,基于Twisted框架开发。它包括了开发框架和数据库缓存服务等各种游戏服务器基础服务,节省大...

大鸡蛋
2013/08/20
29
0
Firefly 团队口号: 拿走直接用!

Firefly是免费、开源、稳定、快速扩展、能 “热更新”的分布式游戏服务器端框架,采用Python编写,基于Twisted框架开发。它包括了开发框架和数据库缓存服务等各种游戏服务器基础服务,节省大...

大鸡蛋
2013/08/20
5.3K
16
卡牌手游《暗黑世界V1.3》商用版正式开源!

开源时间:2013年8月26日 游戏名称:《暗黑世界》 游戏终端:安卓(android) / IOS 游戏类型:卡牌类 游戏版本:V1.3 服务器框架:Firefly Game Server Framework V1.2.2 客户端引擎:Cocos...

大鸡蛋
2013/08/27
6.6K
21
卡牌手游《暗黑世界》安卓APK 编译流程详细教程!(图文)

关于开发环境的搭建,之前的相关文档已经很详细的说明,对环境的搭建请参考以前的相关文档,如有问题,及时在论坛里提问,会有管理人员快速解答,此文档主要针对eclipse下安卓编译. 首先肯定是把暗...

大鸡蛋
2013/09/23
2.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

深入 理解char * ,char ** ,char a[ ] ,char *a[] 的区别

C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字...

天王盖地虎626
27分钟前
1
0
关于我这三年的架构历程(待完成)

从16年7月实习至今,快三年的开发经历中,经手了好几个项目。目前有幸作为一个项目的负责人,完成了一个项目的完全架构设计。因此想记录下这份架构设计中的点点面面。 总架构: 基于DNS的负载...

赵熠熠
28分钟前
0
0
springboot 使用 flyway 进行数据库版本管理

要在启动时自动运行Flyway数据库迁移,请将其添加 org.flywaydb:flyway-core到类路径中。 迁移是表单中的脚本V<VERSION>__<NAME>.sql(使用<VERSION>下划线分隔的版本,例如“1”或“2_1”)...

NotFound403
47分钟前
4
0
spring 5.1.5版本(二)

spring 5.1.5版本(一) spring 5.1.5版本(二) spring 5.1.5版本(三) 对象创建方式 方式一 applicationContext.xml <?xml version='1.0' encoding='UTF-8'?><beans xmlns="http://ww......

gwl_
49分钟前
0
0
CMake生成Mingw用的Make文件

CMake 在win下 默认会生成vc++的nmake用的make 当没安装时 就会报 -- Building for: NMake Makefiles -- The C compiler identification is unknown -- The CXX compiler identification is......

shzwork
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部