消消乐中消除剩余元素时延时消除的功能
2015-06-08 11:35
465 查看
#pragma mark 消除标记了的精灵 void GameScene::removeSp() { m_isAnimationing = true; for (int i = 0; i < m_height * m_width; i++) { AnimationSprite *sp = m_animalMatrix[i]; if (!sp) { continue; } if (sp->getIsNeedRemove()) { sp->setIsTouchEable(false); m_isNeedFillVacancies = true;//需要掉落 // if (sp) { // if(sp->getImgIndex() == 6){ // ---jn新增 // log("GameScene::removeSp() 结晶不会播放惊讶"); // } // sp->playAnimation("jingya"); // } if (sp && sp->getImgIndex() != 6) { // --jn新增 sp->playAnimation("jingya"); } //检查类型,并播放一行消失的动画 // if(sp->getDisplayMode() == DISPLAY_MODE_HORIZONTAL) // { // explodeSpecialH(sp->getPosition()); // } // else if (sp->getDisplayMode() == DISPLAY_MODE_VERTICAL) // { // explodeSpecialV(sp->getPosition()); // } // else if (sp->getDisplayMode() == DISPLAY_MODE_TL){ // explodeSpecialTL(sp->getPosition()); // } // else if (sp->getDisplayMode() == DISPLAY_MODE_OVERFIVE){ // explodeSpecialOverFive(sp->getPosition()); // } // else if (sp->getDisplayMode() == DISPLAY_MODE_CENTER){ // explodeSpecialCenter(sp->getPosition()); // } // else if (sp->getDisplayMode() == DISPLAY_MODE_FF){ // explodeSpecialFF(sp->getPosition()); // } // explodeSp(sp); randomDelayTimeEliminate(sp); } } } void GameScene::randomDelayTimeEliminate(Node* node){ AnimationSprite *sp = (AnimationSprite*)node; if(_bGameOver){ uniform_real_distribution<double> u(0, 2); default_random_engine e(rand()); //产生的随机数字 float r = (float)u(e); sp->runAction(Sequence::create(DelayTime::create(r), CallFuncN::create(CC_CALLBACK_1(GameScene::playEliminateEffect, this)), ScaleTo::create(0.3f, 0), CallFuncN::create(CC_CALLBACK_1(GameScene::actionEndCallback, this)),NULL)); // --jn新 }else{ sp->runAction(Sequence::create(CallFuncN::create(CC_CALLBACK_1(GameScene::playEliminateEffect, this)), ScaleTo::create(0.3f, 0), CallFuncN::create(CC_CALLBACK_1(GameScene::actionEndCallback, this)),NULL)); // --jn新 } }
在randomDelayTimeEliminate函数中,如果游戏结束了,就直接消除,没有结束,则延迟一段时间,在随机一个延时,然后再进行消除。
总结:其实,发现游戏中,状态机的编程方式很实用,记录一个当前的游戏状态,这样非常方便扩展游戏状态,而且可以省去很多的变量。
相关文章推荐
- 一条命令安装服务器java
- VIM插件介绍
- Python 学习笔记1
- 定时监控所有服务器的端口,如果挂起,发送报警邮件
- POJ 3630 Phone List(trie树的简单应用)
- JS产生随机数的几个用法!
- androidのLinearLayout中组件右对齐
- 解决tomcat在进行大并发请求时,出现内存溢出的问题
- background: #ff0000 url(/i/eg_bg_03.gif) ; 图片 + 颜色
- EBS-OAF即时打印
- HTML5-jQueryMobile 按钮Icon组件
- zTree组织机构树(涉及技术包含:zTree参数配置,ajax框架,jquery惊细控制对象,用户自定义控件,webmethod)
- android自动测试方法分析(monkeyrunner,robotium,uiautomator)
- 简介JavaScript中的sub()方法的使用
- 安卓webview和js+html交互利用的addJavascriptInterface和webview.loadUrl("javascript:*
- 截图保存到相册
- Add Two Numbers 2015年6月8日
- nginx访问控制配置
- Bugzilla Configuration
- "《算法导论》之‘字符串’":字符串匹配