Cocos2d-X开发中国象棋《十二》游戏结果的显示与隐藏

上一节中实现了游戏中实现播放背景音乐,这节将实现游戏结果的显示与隐藏

先看一下效果图

当玩家赢了后会显示玩家赢了的对话框

当点击对话框后会隐藏对话框和棋子

单击开始后会改变玩家棋子的颜色

当玩家输了后会显示玩家输了的对话框

游戏结果的实现思路:

1、当玩家赢了后,显示一个对话框,对话框中的内容为“恭喜你,你赢了”

2、当玩家输了后,显示一个对话框,对话框中的内容为“对不起,你输了”

3、当点击对话框后,会隐藏对话框,隐藏棋子

4、单击开始后,会发现改变了玩家棋子的颜色

实现代码:

在SceneGame类中的成员函数init()中添加下面的代码实现创建游戏结果框

    //创建精灵显示游戏结果
    sprite  = CCSprite::create("yingjiemian.png");
    sprite1 = CCSprite::create("shuijiemian.png");
    addChild(sprite);
    addChild(sprite1);

    sprite->setPosition(ccp(winSize.width / 2, winSize.height));
    sprite1->setPosition(ccp(winSize.width / 2, winSize.height));

    //隐藏结果
    sprite->setVisible(false);
    sprite1->setVisible(false);

    //表示不显示游戏结果
    visible = false;

在SceneGame中创建一个成员函数howResult(CCSprite* Sprite, CCSize winSize)用于显示游戏结果框

//显示游戏结果
void SceneGame::ShowResult(CCSprite* Sprite, CCSize winSize)
{
     //显示游戏结果提示框
    Sprite->setVisible(true);
    Sprite->setZOrder(1000);
    visible = true;

    CCMoveTo*  move = CCMoveTo::create(1, ccp(Sprite->getPositionX(), winSize.height / 2));
    Sprite->runAction(move);
}

在SceneGame中创建一个成员函数HideResult(CCSprite* s, CCObject* obj)用于隐藏游戏结果框

//隐藏游戏结果
void SceneGame::HideResult(CCSprite* s, CCObject* obj)
{
    //获得窗口的尺寸
    CCSize winSize = CCDirector::sharedDirector()->getWinSize();

    //隐藏游戏结果
    s->setVisible(false);

    //设置棋子到初始位置
    s->setPosition(ccp(winSize.width / 2, winSize.height));

    visible = false;

    //改变玩家棋子的颜色
    _redSide = ! _redSide;

    //设置红棋先走
    _redTrun = true;

    //重新来一局
    New(obj);
}

在SceneGame的成员函数void SceneGame::moveComplete(CCNode* movetone, void* _killid)中添加下面的代码,实现当杀掉红色的帅或者黑色的将后,显示游戏结果对话框

  //当杀掉将的时候
        if(Stone::JIANG  == _s[killid]->getType())
        {
            //当杀掉的是对方的棋子的时候
            if(_redSide != _s[killid]->getRed())
            {
                //显示游戏结果
                ShowResult(sprite, winSize);
            }
            else//当杀掉的是玩家的棋子
            {
                //显示游戏结果
                ShowResult(sprite1, winSize);
            }
        }

在bool SceneGame::ccTouchBegan(CCTouch* pTouch, CCEvent* pEvent)中添加下面的代码实现当点击游戏结果框后隐藏结果框,隐藏棋子,改变玩家棋子的颜色

   //当触摸到了游戏结果框
    if(sprite->boundingBox().containsPoint(ptInWin) && visible == true)
    {
        //隐藏结果
        HideResult(sprite, obj);
    }

    if(sprite1->boundingBox().containsPoint(ptInWin) && visible == true)
    {
        //隐藏结果
        HideResult(sprite1, obj);
    }



时间: 2024-08-11 00:07:51

Cocos2d-X开发中国象棋《十二》游戏结果的显示与隐藏的相关文章

Cocos2d-X开发中国象棋《六》游戏开始功能的实现

我在前面的博客Cocos2d-X开发中国象棋<四>设计游戏场景中介绍了在游戏场景上场景了一个开始按钮,并没有实现开始的功能 游戏开始功能的实现效果: 实现思路: 1.显示随机位置的棋子 2.将棋子移动到棋盘上的指定位置 具体实现方式: 首先在SceneGame类中定义一个initStone()函数用于初始化棋子 initStone()函数实现了3个功能 1.创建棋子 2.将棋子设置到随机位置 3.隐藏棋子 initStone()中的代码: //初始化32个棋子 void SceneGame::

Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明

紧接上一篇<Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明>,这里专讲OAuth2.0. 理解OAuth2.0 首先我们通过一张图片来了解一下OAuth2.0的运作模式: 从上图我们可以看到,整个过程进行了2次"握手",最终利用授权的AccessToken进行一系列的请求,相关的过程说明如下: A:由客户端向服务器发出验证请求,请求中一般会携带这些参数 ID标识,例如appId 验证后跳转到的URL(redirectUrl) 状态参数

Cocos2d-X开发中国象棋《一》

在介绍开发过程前先展示一下游戏 打开游戏后会进入一个欢迎界面 欢迎界面上有两颗棋子红色的帅和黑色的将,可以通过触摸两颗棋子进入游戏场景 当单击红棋子时,玩家持红旗 当单击黑棋时,玩家持黑棋 单击开始显示棋子 通过鼠标点击走棋 单击悔棋可以实现悔棋 单击新局后再单击开始可以实现重新下棋 单击下面的小喇叭可以实现声音的开关 吃掉对方的将后会显示游戏结果 单击游戏结果后重新开始游戏 移植到Android上的效果 开始界面 游戏界面1 游戏界面2 游戏结果界面 代码和资源下载:http://downlo

Python开发【第二十二篇】:Web框架之Django【进阶】

Python开发[第二十二篇]:Web框架之Django[进阶] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 新随笔 联系 订阅 管理 随笔-124  文章-127  评论-205 Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻

QT开发(五十二)———QML语言

QT开发(五十二)---QML语言 QML是一种声明语言,用于描述程序界面.QML将用户界面分解成一块块小的元素,每一元素都由很多组件构成.QML定义了用户界面元素的外观和行为:更复杂的逻辑则可以结合JavaScript脚本实现. 一.QML基础语法 1.Import语句 QML代码中,import语句一般写在头几行,主要用途如下:     A.包含类型的全名空间     B.包含QML代码文件的目录     C.JavaScript代码文件 格式如下: import Namespace Ver

QT开发(六十二)———QT5解析Json文件

QT开发(六十二)---QT5解析Json文件 一.QT5 Json简介 QT4中使用第三方库QJson解析JSON文件. QT5新增加了处理JSON的类,类均以QJson开头,包含在QtCore模块中.QT5新增加六个相关类: QJsonArray 封装 JSON 数组 QJsonDocument 读写 JSON 文档 QJsonObject 封装 JSON 对象 QJsonObject::iterator 用于遍历QJsonObject的STL风格的非const遍历器 QJsonParseE

QT开发(四十二)——DOM方式解析XML

QT开发(四十二)--DOM方式解析XML 一.DOM简介 1.DOM简介 DOM是Document Object Model的简写,即XML文档对象模型,是由W3C提出的一种处理XML文档的标准接口. DOM 一次性读入整个XML文档,在内存中构造为一棵树(DOM树)将XML文件表示成一棵树,便于随机访问其中的节点,但消耗内存相对多一些.能够在这棵树上进行导航,比如移动到下一节点或者返回上一节点,也可以对这棵树进行修改,或者是直接将这颗树保存为硬盘上的一个 XML 文件. 2.XML DOM节

MiS603开发板 第十二章 SLAVE FIFO流传输

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第十二章 SLAVE FIFO流传输 15.1 USB 固件源码分析 SLAVE FIFOUSB 固件源码仍然采用上

Cocos2d-x开发中国象棋《十一》在游戏中添加背景音乐

在上一节中实现了悔棋,在这节将介绍如何在游戏中添加背景音乐 看一下效果: 实现思路: 当单击后游戏中播放背景音乐,并且背景音乐切换按钮由变成 当单击后停止播放背景音乐,并且背景音乐切换按钮由变成 当游戏进入后台后停止播放背景音乐 当游戏恢复后继续播放背景音乐 实现代码: 在SceneGame类中定义一个成员函数Voice(CCObject*)用于实现背景音乐的切换,Voice(CCObject*)中的代码 //播放背景音乐 void SceneGame::Voice(CCObject*) { s