在上一节中实现了游戏中实现播放背景音乐,这节将实现游戏结果的显示与隐藏
先看一下效果图
当玩家赢了后会显示玩家赢了的对话框
当点击对话框后会隐藏对话框和棋子
单击开始后会改变玩家棋子的颜色
当玩家输了后会显示玩家输了的对话框
游戏结果的实现思路:
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);
}