Cocos2d-x 3.2 大富翁游戏项目开发-第十三部分 购买空地,cocos2d-x项目开发

  次阅读 来源:互联网(转载协议) 2015-09-28 14:47 我要评论(0)

Cocos2d-x 3.2 大富翁游戏项目开发-第十三部分 购买空地,cocos2d-x项目开发

先看一下角色各自的土地图片

\

1、先在场景中创建一个对话框,这个对话框是用来显示购买空地的确认信息的。buyLandCallback回调方法,根据点击的按钮进行分别处理,

如果确认是买地,则修改空地图片,如果取消则返回场景继续其他角色行走。buyLandCallback代码稍后再看

void GameBaseScene::initPopDialog()

{

popDialog = PopupLayer::create(DIALOG_BG);

popDialog->setContentSize(CCSizeMake(Dialog_Size_Width, Dialog_Size_Height));

popDialog->setTitle(DIALOG_TITLE);

popDialog->setContentText("", 20, 60, 250);

popDialog->setCallbackFunc(this, callfuncN_selector(GameBaseScene::buyLandCallback));

popDialog->addButton(BUTTON_BG1, BUTTON_BG3, OK, Btn_OK_TAG);

popDialog->addButton(BUTTON_BG2, BUTTON_BG3, CANCEL, Btn_Cancel_TAG);

this->addChild(popDialog);

popDialog->setVisible(false);

}

2、 我们把消息注册接收重新整理一下,统一写到一个方法中,这样便于后期扩展处理

void GameBaseScene::receivedNotificationOMsg(Object* data)

{

……………………

switch(retMsgType)

{

case MSG_BUY_BLANK_TAG: //处理购买空地

{

………………………

}

case MSG_GO_SHOW_TAG://处理go按钮显示

{

…………………

}

case MSG_GO_HIDE_TAG://处理go按钮消失

{

……………………..

}

}

}

3、 编写工具类Util,主要包含坐标转换 、 字符串截取相关方法。

struct Util

{

//把layer层上的坐标转换成GL坐标

static Point map2GL(const Point& ptMap, TMXTiledMap* map)

{

Point ptUI;

ptUI.x = ptMap.x * map->getTileSize().width;

ptUI.y = (ptMap.y + 1)* map->getTileSize().height;

Point ptGL = ptUI;

ptGL.y = map->getContentSize().height - ptUI.y;

return ptGL;

}

//把GL坐标 转换成layer上的坐标,这样layer层根据坐标就可以判断当前位置的title ID 并进行相关操作

static Point GL2map(const Point& ptGL, TMXTiledMap* map)

{

Point ptUI = ptGL;

ptUI.y = map->getContentSize().height - ptGL.y;

int x = ptUI.x / map->getTileSize().width;

int y = ptUI.y / map->getTileSize().height;

return ccp(x, y);

}

static Vector<String*> splitString(const char* srcStr, const char* sSep)

{

………………….//截取字符串相关

}

};

4、角色轮流行走近一步完善:添加变量oneRoundDone,标示一个回合是否结束,false是没有结束

逻辑同前面文章介绍基本一样,只不过是新加了个变量oneRoundDone,进行我方角色对话框的特殊处理。

当我方角色走完要求的步数之后,需要判断停留所在地是否有空地可以购买,有空地就发送消息,弹出对话框提示购买,购买或取消购买完毕后,发送一个MSG_PICKONE_TOGO_TAG ,从角色容器中取出一个角色,进行行走,全部角色行走完毕后,设置oneRoundDone为true,表示一个回合结束,此时在发送消息,显示go按钮,。

开始实现我方角色购买地皮的功能

void RicherGameController::endGo()

{

GameBaseScene::pathMarkVector.at(stepHasGone)->setVisible(false);

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...