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!

人工智能实验室
相关文章相关文章
  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

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

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...