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