游戏结束的时候,要显示分数。还要可以选择是返回主场景还是退出游戏

  1. // 退出游戏
  2. void menuCloseCallback(cocos2d::Ref* pSender);
  3.  
  4. // 返回主界面
  5. void menuMainCallback(cocos2d::Ref* pSender);

实现该功能的代码例如以下

  1. bool GameOver::init()
  2. {
  3. //////////////////////////////
  4. // 1. super init first
  5. if (!Layer::init())
  6. {
  7. return false;
  8. }
  9.  
  10. bool bRect = false;
  11.  
  12. //背景音乐
  13. if (CocosDenshion::SimpleAudioEngine::getInstance()->isBackgroundMusicPlaying())
  14. {
  15. CocosDenshion::SimpleAudioEngine::getInstance()->stopBackgroundMusic(true);
  16. CocosDenshion::SimpleAudioEngine::getInstance()->playBackgroundMusic("sound/game_over.mp3", true);
  17. }
  18.  
  19. do
  20. {
  21. Size visibleSize = Director::getInstance()->getVisibleSize();
  22. Vec2 origin = Director::getInstance()->getVisibleOrigin();
  23.  
  24. //加入背景图片
  25. auto m_background = Sprite::createWithSpriteFrameName("backgroundGameOver.png");
  26. m_background->setPosition(Point(visibleSize.width / 2, visibleSize.height / 2));
  27. m_background->setAnchorPoint(Vec2(0.5, 0.5));
  28. CC_BREAK_IF(!m_background);
  29.  
  30. this->addChild(m_background);
  31.  
  32. //加入分数
  33. auto score_int = UserDefault::getInstance()->getIntegerForKey("currentScore");
  34. auto score_str = __String::createWithFormat("%d", score_int);
  35. auto score = Label::createWithTTF(score_str->getCString(), "fonts/DFPShaoNvW5-GB.ttf", 40);
  36. score->setPosition(Point(visibleSize.width / 2, visibleSize.height/3*2));
  37. score->setColor(Color3B(255, 0, 0));
  38. CC_BREAK_IF(!score);
  39.  
  40. this->addChild(score);
  41.  
  42. //设定等级
  43.  
  44. //设置标签 并 获取中文文本
  45. auto dictionary = Dictionary::createWithContentsOfFile("fonts/AboutMe.xml");
  46. String rank_str;
  47.  
  48. switch (score_int/1000)
  49. {
  50. case 0:
  51. rank_str = ((__String*)(dictionary->objectForKey("Eleven")))->getCString();
  52. break;
  53. case 1:
  54. rank_str = ((__String*)(dictionary->objectForKey("Ten")))->getCString();
  55. break;
  56. case 2:
  57. rank_str = ((__String*)(dictionary->objectForKey("Nine")))->getCString();
  58. break;
  59. case 3:
  60. rank_str = ((__String*)(dictionary->objectForKey("Eight")))->getCString();
  61. break;
  62. case 4:
  63. rank_str = ((__String*)(dictionary->objectForKey("Seven")))->getCString();
  64. break;
  65. case 5:
  66. rank_str = ((__String*)(dictionary->objectForKey("Six")))->getCString();
  67. break;
  68. case 6:
  69. rank_str = ((__String*)(dictionary->objectForKey("Five")))->getCString();
  70. break;
  71. case 7:
  72. rank_str = ((__String*)(dictionary->objectForKey("Four")))->getCString();
  73. break;
  74. case 8:
  75. rank_str = ((__String*)(dictionary->objectForKey("Three")))->getCString();
  76. break;
  77. case 9:
  78. rank_str = ((__String*)(dictionary->objectForKey("Two")))->getCString();
  79. break;
  80. case 10:
  81. rank_str = ((__String*)(dictionary->objectForKey("One")))->getCString();
  82. break;
  83. default:
  84. rank_str = ((__String*)(dictionary->objectForKey("Zere")))->getCString();
  85. break;
  86. };
  87.  
  88. auto m_label1 = Label::createWithTTF(
  89. rank_str.getCString(),
  90. "fonts/DFPShaoNvW5-GB.ttf",
  91. 65
  92. );
  93. m_label1->setColor(Color3B(255, 0, 0));
  94. m_label1->setPosition(Point(visibleSize.width / 2, visibleSize.height / 2 - m_label1->getContentSize().height));
  95.  
  96. this->addChild(m_label1);
  97.  
  98. /////////////////////////////
  99. // 2. add a menu item with "X" image, which is clicked to quit the program
  100. // you may modify it.
  101.  
  102. //退出游戏 button
  103. auto tempClose1 = Sprite::createWithSpriteFrameName("GameOver_nor.png");
  104. auto tempClose2 = Sprite::createWithSpriteFrameName("GameOver_touched.png");
  105.  
  106. auto closeItem = MenuItemSprite::create(
  107. tempClose1, tempClose2, CC_CALLBACK_1(GameOver::menuCloseCallback, this)
  108. );
  109.  
  110. //返回主界面 button
  111. auto tempBack1 = Sprite::createWithSpriteFrameName("ReturnGame_nor.png");
  112. auto tempBack2 = Sprite::createWithSpriteFrameName("ReturnGame_touched.png");
  113.  
  114. auto backItem = MenuItemSprite::create(
  115. tempBack1, tempBack2, CC_CALLBACK_1(GameOver::menuMainCallback, this)
  116. );
  117.  
  118. // create menu, it's an autorelease object
  119. auto menu = Menu::create(closeItem, backItem, NULL);
  120. menu->alignItemsVerticallyWithPadding(closeItem->getContentSize().height / 2);
  121. menu->setPosition(Vec2(origin.x + visibleSize.width / 2, visibleSize.height / 4));
  122. CC_BREAK_IF(!menu);
  123.  
  124. this->addChild(menu, 1);
  125.  
  126. bRect = true;
  127. } while (0);
  128.  
  129. /////////////////////////////
  130. // 3. add your codes below...
  131.  
  132. return true;
  133. }
  134.  
  135. // 退出游戏
  136. void GameOver::menuCloseCallback(Ref* pSender)
  137. {
  138. Director::getInstance()->end();
  139.  
  140. #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
  141. exit(0);
  142. #endif
  143. }
  144.  
  145. // 返回主界面
  146. void GameOver::menuMainCallback(cocos2d::Ref* pSender)
  147. {
  148. CocosDenshion::SimpleAudioEngine::getInstance()->stopBackgroundMusic(true);
  149. Director::getInstance()->replaceScene(TransitionProgressRadialCCW::create(0.8f,HelloWorld::createScene()));
  150. }

【cocos2d-x 3.7 飞机大战】 决战南海I (十二) 游戏结束场景的更多相关文章

  1. 【cocos2d-x 3.7 飞机大战】 决战南海I (十) 游戏主场景

    主场景要包括其它类的头文件 #include "cocos2d.h" #include "MyPlane.h" #include "Bullet.h& ...

  2. javascript飞机大战-----001分析

    1.游戏引擎 首先要做飞机大战要考虑的是这个游戏被分成了哪几大部分?这样我们一块一块去做,特别清晰明了.那么接下来我们就简单的分析下飞机大战分成了哪几大部分 1.游戏引擎 2.英雄机 3.敌机 4.子 ...

  3. 11.pygame飞机大战游戏整体代码

    主程序 # -*- coding: utf-8 -*- # @Time: 2022/5/20 22:26 # @Author: LiQi # @Describe: 主程序 import pygame ...

  4. cocos2dx实现经典飞机大战

    游戏开始层 #ifndef __LayerGameStart_H__ #define __LayerGameStart_H__ #include "cocos2d.h" USING ...

  5. 【一】仿微信飞机大战cocos2d-x3.0rc1

    參考 [偶尔e网事] 的 [cocos2d-x入门实战]微信飞机大战  cocos2dx 2.0版本号,偶尔e网事他写的很具体,面面俱到,大家很有必要看下.能够通过以下链接跳转: cocos2d-x入 ...

  6. 微信5.0 Android版飞机大战破解无敌模式手记

    微信5.0 Android版飞机大战破解无敌模式手记 转载: http://www.blogjava.net/zh-weir/archive/2013/08/14/402821.html 微信5.0 ...

  7. 基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)

    最近接触过几个版本的cocos2dx,决定每个大变动的版本都尝试一下.本实例模仿微信5.0版本中的飞机大战游戏,如图: 一.工具 1.素材:飞机大战的素材(图片.声音等)来自于网络 2.引擎:coco ...

  8. Cocos2d-x飞机大战教程笔记

    咳咳~跟着大神的教程学做Cocos2d-x的飞机大战...鉴于我是那种跟着教程都会出非常多错的人,所以还是一路跟着做些笔记比較好.并且因为是用课余时间,所以仅仅能断断续续地做,写下来也好让自己别忘记~ ...

  9. js实例--飞机大战

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title> ...

随机推荐

  1. windows系统下nodejs安装、环境配置及删除NPM全局配置

    nodejs安装及设置NPM全局路径 删除NPM全局路径配置 一.nodejs安装及设置NPM全局路径 第一步:下载安装文件 下载nodejs,官网:http://nodejs.org/downloa ...

  2. POJ 3322 Bloxorz I

    首先呢 这个题目的名字好啊 ORZ啊 如果看不懂题意的话 请戳这里 玩儿几盘就懂了[微笑] http://www.albinoblacksheep.com/games/bloxorz 就是这个神奇的木 ...

  3. 使用 SqlBulkCopy 批量插入数据

    /// <summary> /// 使用SqlBulkCopy将DataTable中的数据批量插入数据库中 /// </summary> /// <param name= ...

  4. C#动态验证码

    验证码定义: 就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能 项目中,我们登录注册 ...

  5. JQuery 使用.show()和.hide()做的可爱动画

    只是最基本的东西,没啥稀奇的,只是今天看jquery教程的时候偶然看到show()和hide()是可以写两个参数的, 第一个参数是元素隐藏/显示的速度(单位:毫秒),另一个是一个function类型. ...

  6. intellij IDEA常见操作

    1.中文乱码设置:file - setting - Editor - File Encodings 设置为UTF-8 2.tomcat重新启动:Ctrl-F5,或者左上角 3.删除progect 先c ...

  7. Android第一次项目

    学习了一个月的Android,接触了人生中第一个安卓项目,对于一个小白来说,总结是很重要的学习方法,以下我把学到的东西总结以下: 1. 1>okhttp3用法解析(边贴代码边熟悉) public ...

  8. PHP安装环境搭建

    一. 安装PHP运行服务器 xampps-x64 二.安装PHP程序编辑软件(Zend Studo需要破解) 安装后打开,再关闭 把com.zend.php.core_10.6.0.v20140128 ...

  9. Content-Encoding值

    Content-Encoding值 gzip 表明实体采用GNU zip编码 compress 表明实体采用Unix的文件压缩程序 deflate 表明实体是用zlib的格式压缩的 identity ...

  10. python基础1 格式化输出

    转载自:https://www.cnblogs.com/fat39/p/7159881.html %用法 1.整数输出 %o —— oct 八进制%d —— dec 十进制%x —— hex 十六进制 ...